Time Limit:10000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
输出n行,每行是对应的位置的转化结果。
Sample Input
Sample Output
#include<stdio.h>
#include<string.h>
#include<math.h>
#define max(a, b)(a > b ? a : b)
#define N 110000
char s[N], a[N];
int b[N];
void K(int n)
{
if(n>26)
K((n-1)/26);
printf("%c",(n-1)%26+'A');
}
int main()
{
int i, t, j, k, g, h, f, d, ans, n, m;
scanf("%d", &t);
while(t--)
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
scanf("%s", s);
k = j = g = f = d = 0;
for(int i=0; s[i]; i++)//数字字母分开存, 用j即数字的个数判断是那种转换类型。
{
if(s[i]>='0'&&s[i]<='9')
{
b[j] = b[j] * 10 + s[i] -'0';
f = 1;
}
else if(s[i]>='A'&&s[i]<='Z')
{
a[k++] = s[i];
if(f==1)
j++;
}
}
if(j == 0)//把用字母表示的列数转换成数字。
{
ans = 0;
for(i = 0; a[i]; i++)
{
ans = ans * 26 + a[i] - 'A' + 1;//类似于把字符类型的数字转换成数字, 26一个周期。
}
printf("R%dC%d\n", b[0], ans);
}
else//把用数字表示的列数转换成字母。
{
K(b[1]);
printf("%d\n",b[0]);
}
}
return 0;
}