Barty 的表格
来源:互联网 发布:java 文本聚类 编辑:程序博客网 时间:2024/06/05 07:14
( 程序文件名: excel. pas/c/cpp)
【问题描述】
Excel 中的列号是使用大写字母标识的,第一列是 A,第二列是 B,然后依次标下去,第 26 列是 Z。之后列号变为两位从 AA~ZZ 以字典顺序标识(AA,AB,AC...AZ,BA,BB,BC....ZZ) 。 再 之 后 列 号 变 为 三 位 大 写 字 母AAA---ZZZ(AAA,AAB,AAC...AAZ,ABA...ZZZ),依次类推。Excel 中的行号是使用数字标识的,从 1 开始表示第 1 行,第 2 行,第 3 行……
一直标下去。Barty 手中有一份非常大的表格数据,他想得知某些单元格的内容,但是他不知道 Excel 中这些单元格的行号和列号分别是什么,于是请你编写程序来帮帮他。
【输入文件】文件名: excel.in
第一行两个正整数,数据表格允许的最大行列数m和要查询的单元格数量n(n<= 100)。
接下来 n 行,每行一条格式为“X NUM X NUM”的查询X 是一个大写字母‘R’或‘C’,表示行或列,NUM 为一个整数(0<= NUM <= 10^9)。
【输出文件】文件名: excel.out
对每一条查询,所在单元格的行号和列号,用一个空格隔开
若单元格不存在,输出-1
每条查询占一行。
【样例输入】
100 3
R 23 C 26
R 94 C 27
R 59 C 102
【样例输出】
23 Z
94AA
-1
分析:
题目改编于某国外OJ中一题。当时一眼看上去就觉得很水,没仔细想就敲,结果Wrong Answer好多次。Bella把题目简化后放到这里,目的是强调一下细心。
长度为1的字符串有26个,长度为2的有26*26个……因此我们首先可以确定列号对应的字符串长度。然后就是26进制的数字转化了,组合方法也好暴力转化也好,都需要想清楚边界全A和全Z的情况。
另卡了两个小Trick,就是两个R两个C这种单元格算做不存在的,并且题目中有说行号列号都从1开始,0是不存在的。(Bella很坏吧~)
特判之后,主要要解决的就是进制转化问题,A~Z共有26个,很容易想到这是一个26进制,但是如果直接mod26的话肯定会错的!因为题目上说数字是从1开始的,想一想平常的10进制是0~9的,类比一下26进制应该是0~25的,那么如果从数字1开始的话肯定要多算一个,所以要减去1,具体过程看代码。
#include<iostream>#include<cstdio>#include<cstring>#include<iostream>using namespace std;int m,n;void pt(int x){ x=x-1; int t=x%26; x=x/26; if(x) pt(x); putchar('A'+t); return;}int main(){ freopen("excel.in","r",stdin); freopen("excel.out","w",stdout); scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) { char a[3],b[3]; int a1,b1; scanf("%s%d%s%d",a,&a1,b,&b1); if(a[0]!='R') swap(a1,b1); if(a1>m||a1<1||b1>m||b1<1||a[0]==b[0]) {printf("%d\n",-1);continue;} printf("%d ",a1); pt(b1); printf("\n"); } return 0;}
阅读全文
1 0
- Barty的表格
- Barty 的表格
- 2070 barty的苦恼
- ACdream 1089 barty的智商 (二分)
- 拓扑排序 I - barty的智商 acdream ACdream原创群赛(12)のBUAA选拔赛
- 表格的css,细线表格
- 表格--表格行的类
- 2017西安邀请赛: I. Barty's Computer(暴力+Hash)
- 计蒜客 Barty's Computer hash求字符串前缀和后缀
- 表格特效代码 立体表格 圆角表格 变色的单元格
- 给birt的表格添加表格线
- 表格— — 表格边框的颜色
- 实时编辑表格,可以编辑的表格
- Bootstrap3 表格-带边框的表格
- 不用表格的菜单
- 表格格式的form
- 表格背景的渐变
- 颜色交替的表格
- 高级算法日记4:第2次课笔记
- 遍历 Map 中 EntrySet 集合一点思考。
- jQueryUI widget原理
- 小程序笔记
- 大数据-九
- Barty 的表格
- 进程调度
- Linux VFS文件系统之创建文件
- 1124
- kotlin 之 Android AsyncTask
- 反射
- centos源码安装php7.1.1
- 自动化测试selenium中xpath的用法
- @XmlAccessorType详解