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只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- [系列] Go - 基于 GORM 获取当前请求所执行的 SQL 信息
前言 为了便于精准排查问题,需要将当前的请求信息与当前执行的 SQL 信息设置对应关系记录下来,记录的 SQL 信息包括: 执行 SQL 的当前时间: 执行 SQL 的文件地址和行号: 执行 SQL ...
- 十一、UART&TTY驱动
Linux系统中UART驱动和TTY驱动两者有着紧密的关系,它们不像I2C和SPI驱动是单独一个模块,分析时应当将它们看成一个整体来分析.UART驱动部分依赖于硬件平台,而TTY驱动和具体的平台无关. ...
- Redis 实战 —— 07. 复制、处理故障、事务及性能优化
复制简介 P61 关系型数据库通常会使用一个主服务器 (master) 向多个从服务器 (slave) 发送更新,并使用从服务器来处理所有读请求. Redis 也采用了同样的方法实现自己的复制特性,并 ...
- PE节表
- Server Tracking of Client Session State Changes Connection Management
MySQL :: MySQL 8.0 Reference Manual :: 5.1.12 Connection Management https://dev.mysql.com/doc/refman ...
- RSA2对于所有商户都是单独一对一的,并且只支持开发平台密钥管理和沙箱
蚂蚁金服开发者社区 https://openclub.alipay.com/club/history/read/1495 RSA 和 RSA2 签名算法区别 - 支付宝开放平台 https://ope ...
- 「笔记」AC 自动机
目录 写在前面 定义 引入 构造 暴力 字典图优化 匹配 在线 离线 复杂度 完整代码 例题 P3796 [模板]AC 自动机(加强版) P3808 [模板]AC 自动机(简单版) 「JSOI2007 ...
- Node.js 安全指南
当项目周期快结束时,开发人员会越来越关注应用的"安全性"问题.一个安全的应用程序并不是一种奢侈,而是必要的.你应该在开发的每个阶段都考虑应用程序的安全性,例如系统架构.设计.编码, ...
- Python 中 sorted 如何自定义比较逻辑
在 Python 中对一个可迭代对象进行排序是很常见的一个操作,一般会用到 sorted() 函数 num_list = [4, 2, 8, -9, 1, -3] sorted_num_list = ...
- Struts 2学习(二)
文章目录 @[toc] #动态结果 配置时不知道执行后的结果是哪一个,运行时才知道哪个结果作为视图显示给用户. #全局结果 全局就结果可满足一个包中多个Action共享一个结果. 全局结果位于pack ...