原题目链接
题目描述
Excel 单元格的地址表示很有趣,它使用字母来表示列号。例如:
A
表示第 1 列B
表示第 2 列...
Z
表示第 26 列AA
表示第 27 列AB
表示第 28 列BA
表示第 53 列...
Excel 的最大列号是有限的,但本题将这种表示法一般化,支持将一个很大的正整数转换为对应的 Excel 列号格式。
输入格式
输入一个整数 n
,其范围为 [1, 2147483647]
。
输出格式
输出整数 n
所对应的 Excel 地址表示方式。
输入样例
26
输出样例
Z
c++代码
#include<bits/stdc++.h>using namespace std;int n;int main() {cin >> n;string ans;while(n > 0) {if (n % 26 == 0) {ans += 'Z';n = n / 26 - 1;}else {ans += n % 26 + 'A' - 1;n /= 26;}}reverse(ans.begin(), ans.end());cout << ans;return 0;
}//by wqs
算法解析
发现当输入26的整数倍时和不是26的整数倍规律不一样。
所以要分类处理。