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只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- Spring集成GuavaCache实现本地缓存
Spring集成GuavaCache实现本地缓存: 一.SimpleCacheManager集成GuavaCache 1 package com.bwdz.sp.comm.util.test; 2 3 ...
- uni-app开发经验分享十一: uniapp iOS云打包修改权限提示语
打包提交appstore如果用到了如下权限需要修改提示语,详细描述使用这个权限的原因,如不修改提示语appstore审核可能会被拒绝.Apple的原则是,如果一个app想要申请用户同意某个隐私信息访问 ...
- JVM有哪些垃圾回收器
JVM 的垃圾回收器 目录 JVM 的垃圾回收器 经典垃圾收集器 Serial 收集器 ParNew 收集器 Parallel Scavenge 收集器 Serial Old 收集器 Parallel ...
- 前端面试准备笔记之JavaScript(03)
01. 变量声明提升 在预解析的时候,成员变量和函数,被提升到最高的位置,方便其他程序访问. 可以先使用后声明. 只提升变量名,不提升变量值 let const 声明的变量不具有变量声明提升. // ...
- 小白也能看懂的ACID与隔离级别
前言 现如今JAVA开发工程师的数量越来越多,但大多数工程师平时做的工作都是简单的CRUD,当你一直处于这种舒适的环境中不追求进步的时候,如果哪一天你突然想要改变环境,换个工作,去与面试官当面聊技术的 ...
- Linux系统使用lvm扩展根分区
Linux系统使用lvm扩展根分区 背景:买的云主机虚拟机封装镜像是40G的系统盘,后期适用不规范或者其他需求需要扩展系统盘,而非挂载在一个盘至新建目录. 1.原本目录磁盘等信息: 2.使用vgdis ...
- Linux文件系统之INode
本文转载自阮一峰博客:理解inode 一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存51 ...
- 新编日语1234册/重排本/全册 pdf
网上找的资源链接大部分都失效了,无奈之下只好淘宝购买.顺便分享一下吧. 链接: https://pan.baidu.com/s/1v5-osHKrIPzlgpd8yNIP5Q 提取码: kexn
- HADOOP 之坑
hadoop 标签: ubuntu hdfs API 概述 通过API访问hdfs文件系统,出现错误:WARN util.Shell:Did not find winutils.exe:{} HADO ...
- Python学习【第2篇】:基本数据类型
基本数据类型 字符串 ---------n1 = "xiaoxing" n2 = "admin" n3 = "123" n4 = & ...