蓝桥杯历年真题:Excel地址(C++实现最简单的操作)

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


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


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


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




  请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。


  注意:
  main函数需要返回0;
  只使用ANSI C/ANSI C++ 标准;
  不要调用依赖于编译环境或操作系统的特殊函数。
  所有依赖的函数必须明确地在源文件中 #include <xxx>
  不能通过工程设置而省略常用头文件。


  提交程序时,注意选择所期望的语言类型和编译器类型。


  ------------------------------

#include<iostream>
#include<string>
using namespace std;

int main()
{
     long data;
	 string address;
	 cin>>data;
	 while(data!=0)
	 {
		 if(data%26)
	         address+='A'+data%26-1;
		 else
			 address+='Z';
		 data--;
		 data/=26;
	 }
	 for(int i=address.length()-1;i>-1;i--)
		 cout<<address[i];
	 cout<<endl;
	 return 0;
}

猜你喜欢

转载自blog.csdn.net/BTBO_/article/details/79716819
今日推荐