历届试题 Excel地址

Excel单元格的地址表示很有趣,它使用字母来表示列号。
  比如,
  A表示第1列,
  B表示第2列,
  Z表示第26列,
  AA表示第27列,
  AB表示第28列,
  BA表示第53列,
  ....


  当然Excel的最大列号是有限度的,所以转换起来不难。
  如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?


  本题目即是要求对输入的数字, 输出其对应的Excel地址表示方式。
样例输入
26
样例输出
Z
样例输入
2054
样例输出
BZZ
数据规模和约定
  我们约定,输入的整数范围[1,2147483647]


  峰值内存消耗(含虚拟机) < 256M
  CPU消耗 < 1000ms

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     long long a;
 6     int yushu;
 7     int b[100];
 8     cin>>a;
 9     int i=0;
10     while(a)
11     {
12         yushu=a%26;
13         if(yushu==0)yushu=26;
14         a=(a-yushu)/26;
15         b[i++]=yushu;
16     }
17     for(int j=i-1;j>=0;j--)
18     {
19         printf("%c",b[j]+'A'-1);
20     }
21     return 0;
22 }

这个问题是利用进制的转化,不同点在于 ,每次的求解必须要减去26 

其实以前的也应该减去

但是因为以前的时候不会出现比26这个情况

所以省略了那一步

原文地址:https://www.cnblogs.com/jweie/p/8371168.html