蓝桥杯 5. Excel地址

原题目链接

题目描述

Excel 单元格的地址表示很有趣,它使用字母来表示列号。例如:

  • A 表示第 1 列
  • B 表示第 2 列
  • ...
  • Z 表示第 26 列
  • AA 表示第 27 列
  • AB 表示第 28 列
  • BA 表示第 53 列
  • ...

Excel 的最大列号是有限的,但本题将这种表示法一般化,支持将一个很大的正整数转换为对应的 Excel 列号格式。


输入格式

输入一个整数 n,其范围为 [1, 2147483647]


输出格式

输出整数 n 所对应的 Excel 地址表示方式。


输入样例

26

输出样例

Z

c++代码

#include

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的整数倍规律不一样。

所以要分类处理。

你可能感兴趣的:(算法,数据结构,蓝桥杯,c++,深度优先)