21行代码AC_标题 Excel地址 2017年蓝桥杯真题(解题报告+通法)
励志用更少的代码做更高效的表达
题目描述
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年蓝桥杯真题(解题报告+通法)相关推荐
- 13行代码AC_2017年省赛C组蓝桥杯第一题 贪吃蛇长度(考查文件读取)
励志用少的代码做高效表达 题目描述 ±------------------------------------------------+ | | | H###### #### | | # # # | ...
- 购物单 蓝桥杯真题(EXCEL一分钟巧解)
上文链接:蓝桥杯之猴子吃桃-递归极度简化(c++实现) 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促 ...
- 21行代码AC_【蓝桥杯】承压计算(解题通法+技巧)
励志用更少的代码做更高效的表达 问题描述 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同. 金属材料被严格地堆放成金字塔形. 7 5 8 7 ...
- 16行代码AC——例题6-4破损的键盘(Broken Keyboard,UVa 11988)——解题报告
励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-11988 题目大意: 输入一个字符串,输出在原本应该是怎么样的? 具体方法是: 若读取到'[', 则执行Home键:将光标移到行首. 若读 ...
- 蓝桥杯真题跑步锻炼(Excel快速准确解法)
文章目录 前言 题目描述 Excel相关函数简介 求解过程 代码验证 前言 在蓝桥杯中有一些题目可以借助Excel这个强大的工具来快速准确的求解,这篇文章就以2020年第十一届蓝桥杯省赛C/C++大学 ...
- 【蓝桥杯真题】2021年蓝桥杯省赛A组题目解析+代码(python组)
2021年蓝桥杯省赛A组题解(python组) 来自微信公众号:算法梦工厂,二维码见文末. 欢迎加入蓝桥杯备赛群:768245918,获取往届试题,测试数据,算法课程等相关资源. A:卡片 答案:31 ...
- 【解题报告+通法】_九宫幻方 蓝桥杯 2017年C组第八题(dfs解法)
题目描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方又被 ...
- 21行代码AC_ 试题H: 修改数组【解题报告】
励志用更少的代码做更高效的表达 题目描述 给定一个长度为N 的数组A = [A1, A2,-,AN],数组中有可能有重复出现的整数. 现在小明要按以下方法将其修改为没有重复整数的数组.小明会依次修改A ...
- 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告
励志用尽量少的代码做高效的表达. 以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数. 输入格式: 输入二叉树的先序序列. 提示:一棵二叉树的先序序列是一个字符串,若字符是'#',表示该二叉树是空 ...
最新文章
- oracle数据库查询如何导出大字段,Oracle数据库导出大字段(CLOB)数据-Oracle
- UA OPTI570 量子力学 恒等算符在算符计算中的应用
- libmesh 思维导图(类接口设计)
- Atitit.iso格式蓝光 BDMV 结构说明
- OpenCV 教程入门篇
- matlab编写优化目标函数,基于MATLAB的二级齿轮减速器的优化设计
- 2012,当我们谈论移动互联网创业时,我们在谈论些什么?
- ofo的智能锁初代方案:声波频率识别开锁
- osg绳索_绳索:理论与实践
- 在spring.io网下下载的快速入门项目,导进去pom.xml文件爆红,报:Non-resolvable parent POM for com.tc:demo:0.0.1-SNAPSHOT: F
- 从NCBI 上下载 gbff 文件并得到 CDS 信息
- 期货交易中的重仓操作
- 如何有效阅读他人代码(一)
- Android Architecture(Is Activity God?)
- Java API 访问HA模式下的HDFS集群
- xxl-job调度中心集群部署重复调度问题
- CeTx解决pdf书签乱码问题
- 100款 ❤HTML5七夕情人节表白网页源码❤ HTML+CSS+JavaScript 【建议收藏】
- Ubuntu 添加 chrome 浏览器
- Uniapp 微信小程序直接打开地图App (不经过内置地图页)