ConstStar
发布于 2022-09-04 / 150 阅读 / 0 评论 / 0 点赞

蓝桥杯2017年C组:Excel地址

问题描述

Excel单元格的地址表示很有趣,它使用字母来表示列号。
  比如,
  A表示第1列,
  B表示第2列,
  Z表示第26列,
  AA表示第27列,
  AB表示第28列,
  BA表示第53列,
  ….
  当然Excel的最大列号是有限度的,所以转换起来不难。
  如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?
  本题目即是要求对输入的数字, 输出其对应的Excel地址表示方式。

样例输入
26
样例输出
Z

样例输入
2054
样例输出
BZZ

解题方案

代码

#include <iostream>

using namespace std;

string fun(long long n) {
    int temp;
    string res;

    while (n) {
        temp = n % 26;
        n /= 26;


        if (temp) {
            res = char(temp - 1 + 'A') + res;
        } else {
            res = 'Z' + res;
            n--;
        }
    }

    return res;
}

int main() {
    long long n;
    cin >> n;

    cout << fun(n);

    return 0;
}

评论