博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 1B
阅读量:4690 次
发布时间:2019-06-09

本文共 1509 字,大约阅读时间需要 5 分钟。

Description

  在一些知名的表格处理系统中(比如:excel表格),我们经常用大写的字母来表示列,例如A表示第1列,B表示第2列,第26列用Z来表示,同时第27列我们用AA来表示,第28列我们用AB来表示,第29列我们用AC来表示,AZ表示第52列,ZZ之后我们就需要用3个字母来表示列了。
  行的表示比较简单,我们一般用正整数来表示,比如1就表示第1行,5就表示第5行,行和列一起表示成为类似BC23的情况,这个表示在第23行,第55列。
  有时候,我们的系统也会用RXCY的格式来表示,X和Y是整数,分别表示行号和列号。例如:R23C55表示的位置和之前那个例子是一样的。
  你的任务是写一个程序,将这些位置在两种不同的表示方法之间转化。

Input

第一行是一个正整数n(1<=n<=10^5), 表示测试数据的数量。
接下来n行,每行一串字符,表示一个位置,输入保证所有的位置都是正确的,没有一个位置的行号或者列号超过10^ 6。

Output

输出n行,每行是对应的位置的转化结果。

Sample Input

2
R23C55
BC23

Sample Output

BC23
R23C55
模拟题。
把所有情况都考虑到就好。
注意可能出现
 AAA12转化为R12C703
R12C703转化为 AAA12一类的。
#include 
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define N 10500void K(int n){ if(n>26) K((n-1)/26); printf("%c",(n-1)%26+'A');}//利用递归typedef long long LL;int main(){ int t; char s[N]; char str[N]; int a[N]; scanf("%d", &t); while(t--) { memset(str,0,sizeof(str)); memset(s,0,sizeof(s)); memset(a,0,sizeof(a)); scanf("%s",str); int len = strlen(str); int j = 0; int k = 0; int f = 0; for(int i=0; i
='0'&&str[i]<='9') { a[j] = a[j] * 10 + str[i] -'0'; f = 1; } else if(str[i]>='A'&&str[i]<='Z') { s[k++] = str[i]; if(f==1) j++; } } int d = k;///s储存了所有的字母;a储存了所有的数字。 if(j==1&&d==2) { K(a[1]); printf("%d\n",a[0]); }//转化为AAA12类的 else { k = s[0] - 'A' + 1; for(int i=1; i

 

转载于:https://www.cnblogs.com/biu-biu-biu-/p/5777208.html

你可能感兴趣的文章
第五篇:白话tornado源码之褪去模板的外衣
查看>>
设备常用框架framework
查看>>
bootstrap模态框和select2合用时input无法获取焦点(转)
查看>>
21世纪经济网APP
查看>>
解决NetworkOnMainThreadException
查看>>
1039 到底买不买
查看>>
农银电商项目学习笔记(一)
查看>>
MockObject
查看>>
Chukwa
查看>>
(转)Maven仓库——私服介绍
查看>>
设计模式之工厂模式
查看>>
仿复制粘贴功能,长按弹出tips的实现
查看>>
Kubernetes-Host网络模式应用
查看>>
第三次作业
查看>>
使用HTML5构建iOS原生APP(2)
查看>>
sqlplus terminators - Semicolumn (;), slash (/) and a blank line
查看>>
省选知识清单/计划列表(咕?)
查看>>
远程桌面(3389)复制(拖动)文件
查看>>
转 lucene3搜索引擎,索引建立搜索排序分页高亮显示, IKAnalyzer分词
查看>>
bootstrap datetimepicker 位置错误
查看>>