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

    所以省略了那一步

  • 相关阅读:
    java object bean 转map
    常用css
    mysql 生成max+1编号
    MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
    cookie记住账户密码
    session有效时间
    常用jstl
    高性能MySQL--innodb中事务的隔离级别与锁的关系
    mysql8.0.11的坑早知道
    git进阶--你可能不知道的很好用git功能
  • 原文地址:https://www.cnblogs.com/jweie/p/8371168.html
Copyright © 2011-2022 走看看