codeforces 01B
10 seconds
64 megabytes
standard input
standard output
In the popular spreadsheets systems (for example, in Excel) the following numeration of columns is used. The first column has number A, the second — number B, etc. till column 26 that is marked by Z. Then there are two-letter numbers: column 27 has number AA, 28 — AB, column 52 is marked by AZ. After ZZ there follow three-letter numbers, etc.
The rows are marked by integer numbers starting with 1. The cell name is the concatenation of the column and the row numbers. For example, BC23 is the name for the cell that is in column 55, row 23.
Sometimes another numeration system is used: RXCY, where X and Y are integer numbers, showing the column and the row numbers respectfully. For instance, R23C55 is the cell from the previous example.
Your task is to write a program that reads the given sequence of cell coordinates and produce each item written according to the rules of another numeration system.
The first line of the input contains integer number n (1 ≤ n ≤ 105), the number of coordinates in the test. Then there follow n lines, each of them contains coordinates. All the coordinates are correct, there are no cells with the column and/or the row numbers larger than 106 .
Write n lines, each line should contain a cell coordinates in the other numeration system.
2
R23C55
BC23
BC23
R23C55
这题唯一麻烦的一点,就是如果把CXX转化为字母,由题意我们可以知道,A是1,但我们操作的时候,一般都是某个数字+‘A'的ascii码
例如:
y=x+'A';
这个时候,y如果是’A‘,那么x就是0了,但按照题意,x为1,y才等于'A',所以应该将x减一
知道这点,这题就好做了
附本人ac代码(很多地方都写的很麻烦):
1 #include <cstdio>
2 #include <cstring>
3 #include <iostream>
4 #include <string>
5 using namespace std;
6 bool dig(char u) {
7 if(u >= '0' && u <= '9') return true;
8 return false;
9 }
10 int main() {
11 ios::sync_with_stdio(false);
12 int n,flag = 0;
13
14 cin>>n;
15 while(n--) {
16 string a;
17 string rr,cc;
18 flag = 0;
19 cin>>a;
20 for(int i = 0; i < a.length()-1; i++) {
21 if(dig(a[i]) && !dig(a[i+1])){
22 flag = 1;
23 break;
24 }
25 }
26
27 // cout<<flag<<endl;
28 if(flag) { //rxcx
29 int r = 0,c = 0;
30 int len = 1;
31 while(dig(a[len])) {
32 r = r*10 + a[len] - '0';
33 // cout<<a[len]-'0'<<" "<<r<<endl;
34 len++;
35 }
36 len++;
37 while(len < a.length()) {
38 c = c*10 + a[len] - '0';
39 len++;
40 }
41 // cout<<c<<endl;
42 while(c) {
43 c--; //就是这里,注意减一
44 cc += c%26 + 'A';
45 c = c/26;
46 // cout<<c<<endl;
47 }
48 for(int i = cc.length() - 1; i >= 0; i--) {
49 cout<<cc[i];
50 }
51 cout<<r<<endl;
52 }
53 else {
54 int len = 0;
55 int c = 0,r = 0;
56 while(!dig(a[len])) {
57 c = c*26 + a[len] - 'A' + 1;
58 len++;
59 }
60 while(len < a.length()) {
61 r = r*10 + a[len] - '0';
62 len++;
63 // cout<<r<<" "<<a[len]<<endl;
64 }
65 cout<<"R"<<r<<"C"<<c<<endl;
66 }
67 }
68 return 0;
69 }
附高手代码:
1 #include<cstdio>
2 void g(int t){if(t){g((t-1)/26);putchar(65+(t-1)%26);}}
3 int main(){
4 int n,x,y;
5 char s[64],*p;
6 for(scanf("%d ",&n);n--;){
7 gets(s);
8 if(sscanf(s,"%*c%d%*c%d",&x,&y)==2){
9 g(y);
10 printf("%d\n",x);
11 }else{
12 for(x=0,p=s;*p>64;++p)
13 x=x*26+*p-64;
14 printf("R%sC%d\n",p,x);
15 }
16 }
17 return 0;
18 }
codeforces 01B的更多相关文章
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- MYSQL基础知识的复习2
1.修改表中的数据 update 表名 set 要修改的字段 where 条件;-- 如果修改多个字段那么字段和字段之间用逗号隔开 2.查询(很重要) 1.查询表中部分字段: select 字段名,字 ...
- kettle数据质量统计
1.利用Kettle的"分组","JavaScript代码","字段选择"组件,实现数据质量统计.2.熟练掌握"JavaScrip ...
- CoeMonkey少儿编程第4章 变量
点击这里,现在就开启CodeMonkey的趣味编程之旅. 目标 了解什么是变量 了解变量的命名规则 掌握如何使用变量 变量 什么是变量?顾名思义,变量就是可以变化的量. 和变量相对的是常量,即不可变化 ...
- 一键测试VPS到国内速度脚本 SuperBench.sh,以及一键验收云主机脚本
我们买国外VPS服务器测试网络通常会用到speedtest,speedtest默认是测试到最近的节点,那么到国内速度如何呢?虽然可以指定服务器编号,但是一个个测试还是比较麻烦的,这里推荐一个脚本整合了 ...
- Monkey patching
"A monkey patch is a way to extend or modify the run-time code of dynamic languages without alt ...
- (五)整合 Swagger2 ,构建接口管理界面
整合 Swagger2 ,构建接口管理界面 1.Swagger2简介 1.1 Swagger2优点 1.2 Swagger2常用注解 2.SpringBoot整合Swagger2 2.1 Swagee ...
- spark SQL (一)初识 ,简介
一, 简介 Spark SQL是用于结构化数据处理的Spark模块.与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了关于数据结构和正在执行的计算的更多信息.在内部 ...
- 查看Linux用的桌面是GNOME、KDE或者其他(转)
http://superuser.com/questions/96151/how-do-i-check-whether-i-am-using-kde-or-gnome 1) pgrep -l &quo ...
- markdown 编辑器使用教程---字体、颜色、表格换行、链接等
资源池: 绿色版markdown编辑器:点击这里 提取码:ftf9 1.标题 #一级标题 ##二级标题 ###三级标题 ####四级标题 #####五级标题 ######六级标题 一级标题 二级标题 ...
- OSPF总结
参考文档:OSPF知识点总结(华为)https://wenku.baidu.com/view/8cc8ab52a36925c52cc58bd63186bceb19e8edf6.html OSPF概念 ...