博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Excel地址 (进制问题)
阅读量:5238 次
发布时间:2019-06-14

本文共 943 字,大约阅读时间需要 3 分钟。

问题描述

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

  当然Excel的最大列号是有限度的,所以转换起来不难。

  如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?

  本题目即是要求对输入的数字, 输出其对应的Excel地址表示方式。

样例输入
26
样例输出
Z
样例输入
2054
样例输出
BZZ
数据规模和约定
  我们约定,输入的整数范围[1,2147483647]

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

  CPU消耗 < 1000ms

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

解析:乍一看是26进制,但是发现没有0,有26.

再想一想,我们遇到%26==0的情况时,应该把26留下,但是需要让n–,也就是说向前一位借一,这样就满足没0有26了

#include
#define ll long long#define inf 0x3f3f3f3f#define pb push_back#define rep(i,a,b) for(int i=a;i
=a;i--)using namespace std;const int N=1e5+100;ll arr[N];int main(){ ll n; int cnt=0; cin>>n; while(n) { if(n%26==0) arr[cnt++]=26,n--;//由于没有零的存在,所以我们要再借1,组成26 else arr[cnt++]=n%26; n/=26; } rep1(i,cnt-1,0) cout<<(char)(arr[i]-1+'A'); cout<

转载于:https://www.cnblogs.com/ffgcc/p/10546471.html

你可能感兴趣的文章
snmpwalk命令常用方法总结
查看>>
网站产品设计
查看>>
C++按格式接收输入字符(京东,滴滴,360笔试必用)
查看>>
代理ARP
查看>>
go 学习笔记(4) ---项目结构
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
Java IO流学习总结
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
递归函数,二分运算,正则表达式
查看>>
Flutter之内置动画(转)
查看>>
MySql优化相关概念的理解笔记
查看>>
数据库解决方案
查看>>
DataContract和DataMember的作用
查看>>
js如何获取response header信息
查看>>
python_文件的打开和关闭
查看>>
ADO.NET介绍
查看>>
iOS: 数据持久化方案
查看>>
【C#】【Thread】Monitor和Lock
查看>>