励志用更少的代码做更高效的表达


题目描述

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

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

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

例如,
输入:
26
则程序应该输出:
Z

再例如,
输入:
2054
则程序应该输出:
BZZ

我们约定,输入的整数范围[1,2147483647]


解题思路

Excel单元格… 算了。题意很简单,A-Z代表1-26, 如:BZZ = 2*26² + 26*26¹ + 26*26º = 2054

这种划分题无非两种分法: 从大至小划分, 或从小至大取余划分。

受惯性思维影响, 最初的想法是从大至小划分,因为总觉得划分了大块在去划分小块要容易些(汗,和我一样想法的举个爪)。但在解释样例的时候, 我发现如果按照从大至小的思想来做, BZZ会被解释称C空Z, 因为第二个Z的26*26 可以看做1*26*26, 即若某个字母为Z,它就可以被前一个字母表示。 遂放弃。

那就只剩从小到大取余划分了, 由于逻辑比较绕, 因此选择先在草纸上实现代码, 最后誊到编译器上。

总结:本题思路不难, 但由于走岔了路, 还是做了好久才搞出来。


代码展示

#include<bits/stdc++.h>
using namespace std;
int main() {//定义一个数组, 存储1-26 方便映射int a[26];a[0] = 26;for(int i = 1; i < 26; i++) a[i] = i; int n; cin>>n;string s;int num = 0;while(n>0) {int k1 = pow(26, num+1);   //将其不能被k1整除的部分整合成字母。int k = n%k1;k /= pow(26, num);int x = a[k];s += (char)(x-1+65);n -= pow(26, num)*a[k];num++; }int len = s.length();for(int i = len-1; i >= 0; i--) cout << s[i];
return 0; }

把手举过头顶,突然张开五指,那么,恭喜你给自己放了个烟花!

21行代码AC_标题 Excel地址 2017年蓝桥杯真题(解题报告+通法)相关推荐

  1. 13行代码AC_2017年省赛C组蓝桥杯第一题 贪吃蛇长度(考查文件读取)

    励志用少的代码做高效表达 题目描述 ±------------------------------------------------+ | | | H###### #### | | # # # | ...

  2. 购物单 蓝桥杯真题(EXCEL一分钟巧解)

    上文链接:蓝桥杯之猴子吃桃-递归极度简化(c++实现) 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促 ...

  3. 21行代码AC_【蓝桥杯】承压计算(解题通法+技巧)

    励志用更少的代码做更高效的表达 问题描述 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料.   每块金属原料的外形.尺寸完全一致,但重量不同. 金属材料被严格地堆放成金字塔形.   7 5 8 7 ...

  4. 16行代码AC——例题6-4破损的键盘(Broken Keyboard,UVa 11988)——解题报告

    励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-11988 题目大意: 输入一个字符串,输出在原本应该是怎么样的? 具体方法是: 若读取到'[', 则执行Home键:将光标移到行首. 若读 ...

  5. 蓝桥杯真题跑步锻炼(Excel快速准确解法)

    文章目录 前言 题目描述 Excel相关函数简介 求解过程 代码验证 前言 在蓝桥杯中有一些题目可以借助Excel这个强大的工具来快速准确的求解,这篇文章就以2020年第十一届蓝桥杯省赛C/C++大学 ...

  6. 【蓝桥杯真题】2021年蓝桥杯省赛A组题目解析+代码(python组)

    2021年蓝桥杯省赛A组题解(python组) 来自微信公众号:算法梦工厂,二维码见文末. 欢迎加入蓝桥杯备赛群:768245918,获取往届试题,测试数据,算法课程等相关资源. A:卡片 答案:31 ...

  7. 【解题报告+通法】_九宫幻方 蓝桥杯 2017年C组第八题(dfs解法)

    题目描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方又被 ...

  8. 21行代码AC_ 试题H: 修改数组【解题报告】

    励志用更少的代码做更高效的表达 题目描述 给定一个长度为N 的数组A = [A1, A2,-,AN],数组中有可能有重复出现的整数. 现在小明要按以下方法将其修改为没有重复整数的数组.小明会依次修改A ...

  9. 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告

    励志用尽量少的代码做高效的表达. 以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数. 输入格式: 输入二叉树的先序序列. 提示:一棵二叉树的先序序列是一个字符串,若字符是'#',表示该二叉树是空 ...

最新文章

  1. oracle数据库查询如何导出大字段,Oracle数据库导出大字段(CLOB)数据-Oracle
  2. UA OPTI570 量子力学 恒等算符在算符计算中的应用
  3. libmesh 思维导图(类接口设计)
  4. Atitit.iso格式蓝光 BDMV 结构说明
  5. OpenCV 教程入门篇
  6. matlab编写优化目标函数,基于MATLAB的二级齿轮减速器的优化设计
  7. 2012,当我们谈论移动互联网创业时,我们在谈论些什么?
  8. ofo的智能锁初代方案:声波频率识别开锁
  9. osg绳索_绳索:理论与实践
  10. 在spring.io网下下载的快速入门项目,导进去pom.xml文件爆红,报:Non-resolvable parent POM for com.tc:demo:0.0.1-SNAPSHOT: F
  11. 从NCBI 上下载 gbff 文件并得到 CDS 信息
  12. 期货交易中的重仓操作
  13. 如何有效阅读他人代码(一)
  14. Android Architecture(Is Activity God?)
  15. Java API 访问HA模式下的HDFS集群
  16. xxl-job调度中心集群部署重复调度问题
  17. CeTx解决pdf书签乱码问题
  18. 100款 ❤HTML5七夕情人节表白网页源码❤ HTML+CSS+JavaScript 【建议收藏】
  19. Ubuntu 添加 chrome 浏览器
  20. Uniapp 微信小程序直接打开地图App (不经过内置地图页)

热门文章

  1. Python 中的作用域
  2. docker学习笔记(二)创建自己的镜像
  3. Java类加载器(二)——自定义类加载器
  4. 使用 Go 实现生产者和消费者,Kafka 正式升级到 3.0!
  5. C++中类的6个默认成员函数
  6. 视频质量评估的新方式:VMAF百分位数
  7. Hulu:如何实现大型比赛直播系统自动扩容
  8. FFmpeg Maintainer赵军:FFmpeg关键组件与硬件加速
  9. GitHub超实用操作
  10. 关于ngx_trylock_accept_mutex的一些解释