zoukankan      html  css  js  c++  java
  • 历届试题 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这个情况

    所以省略了那一步

  • 相关阅读:
    Add source code and doc in maven
    Spring toturial note
    How to add local jar into maven project
    Ubuntu 12.04 下安装 Eclipse
    如何更改linux文件的拥有者及用户组(chown和chgrp)
    20非常有用的Java程序片段
    Java中的Set、List、Map的区别
    Java I/O知识点汇总
    Java I/O流整理
    hadoop2.0集群配置
  • 原文地址:https://www.cnblogs.com/jweie/p/8371168.html
Copyright © 2011-2022 走看看