暑期集训Day2训练赛D题Spreadsheets(codeforces 1B)

应该是一道比较简单的模拟题,然而弱菜如我纠结于1WA好久。最终找到的错误竟是不久前犯过的错误,所以,数字转字符时模26是一定考虑”Z“这个特殊情况的。

开始忘记贴题目,现补上

D - Spreadsheets
Time Limit:10000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
Submit  Status

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
AC代码如下:

#include 
#include 
#include 
using namespace std;


int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		string str;
		int flag1=0,flag2=0,flag3=0,posC,len,col=0,rol=0;
		char co[15],ro[15];
		cin>>str;
		len=str.length();
		//判断是哪一种类型的转换 
		if(str[0]=='R') flag1=1;
		if(str[1]<65) flag2=1;
		for(int i=2;i

你可能感兴趣的:(暑期集训)