码迷,mamicode.com
首页 > 其他好文 > 详细

历届试题 Excel地址

时间:2018-01-29 21:31:18      阅读:834      评论:0      收藏:0      [点我收藏+]

标签:方式   必须   转换   ...   字母   while   i++   span   试题   

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这个情况

所以省略了那一步

 

历届试题 Excel地址

标签:方式   必须   转换   ...   字母   while   i++   span   试题   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!