168. Excel Sheet Column Title
类似26进制,但是每一个处理都没有0的计数,经过多次2进制竖式的形式的类比和推导发现,只要涉及到Z,也就是除法余数为0的时候会遇到错误,错了很多次发现规律,余数为0,也就是出现Z,对n的继续处理的值要减1。举例说明,52 = 26 * 2 + 0,出现余数等于0,因为没有0的计数,其实0代表Z。n被2代替进入下个循环。那么剩下的2 = 26 * 0 + 2,余数为2,代表字幕B,按照正常计算来说结果是BZ,但实际上结果是AZ,经过多次验证,均有此问题,所以当余数为0时,在n被2取代时要减1。
其中的数学理由没太想好怎么解释,是该计数法没有0引起的。
class Solution {
public:
string convertToTitle(int n) {
vector<char> ans;
string str = "";
while(1)
{
int temp = n / 26;
int yushu = n % 26;
if(yushu == 0)
{
ans.push_back('Z');
temp--;
}
if(yushu != 0)ans.push_back('A'+ yushu - 1);
if(temp == 0)break;
n = temp;
}
for(int i = ans.size() - 1; i >= 0; i--)
{
str += ans[i];
}
return str;
}
};