南海区2021年C++甲组真题第3题——Excel地址
题目描述
Excel单元格的地址表示很有趣,它使用字母来表示列号。
比如:
A表示第1列,
B表示第2列,
Z表示第26列,
AA表示第27列,
AB表示第28列,
BA表示第53列,
...
当然Excel的最大列号是有限度的,所以转换起来不难。
多多想把这种表示法一般化,把很大的数字转换为很长的字母序列。
输入格式
输入一个整数N(0 < N <= 1000000000)
数据范围
输出格式
输出对应的地址表示方式。
样例
输入数据 1
53
输出数据 1
BA
AC代码
#include<bits/stdc++.h>
using namespace std;
long long n;
string s="";
int main(){
cin>>n;
s[0]='A'-1;
while(n)
{
if(n%26!=0)s+='A'-1+n%26;
else s+='Z';
n--;
n/=26;
}
for(int i=s.size()-1;i>=0;i--)
{
cout<<s[i];
}
return 0;
}
有点难理解……(也很难讲明白,自己吸收吧)