题目
思路
类似于进制转换
- while循环,每次对26取余,且除以26
- 需要注意的是,这个下标是从1->A开始,所以每次取余的结果需要减1
- 若是取余的结果为0,则需要向“高位”借位
- 最后,反转字符串
代码
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string convertToTitle(int columnNumber) {
string ret="";
while(columnNumber){
int pos=columnNumber%26;
columnNumber/=26;
if(pos>0) pos-=1;
else{//借位
pos=25;
columnNumber--;
}
ret.push_back('A'+pos);
}
reverse(ret.begin(),ret.end());
return ret;
}
int main(){
int n;
cin>>n;
string str=convertToTitle(n);
cout<<str<<endl;
return 0;
}