classSolution { public: string convertToTitle(int n){ int k = 1; // 初始位数为 1 for(longlong p = 26; n > p; p *= 26) // 将p定义为 long long, 防止后面爆 int { // 每次当 n 大于当前的范围时,说明字符的位数应该多 1 n -= p; k ++; }
n --; //最后得到的结果表明 n 位于 26 ^ k, 26 ^ (k + 1) 之间,由于需要与 A-Z 对应,因此可将 n - 1 string res; while( k --) { res += n % 26 + 'A'; n /= 26; }