源码:
#include<iostream>
#include<cstring>
using namespace std;
char input[50];
int len;
inline bool ischar(char a){
return a>='A'&&a<='Z' ? true : false;
}
void a2b(void){
int i;
int x = 0,y = 0;
for(i = 0;ischar(input[i]);++ i)
y = y*26 + input[i] - '@';
for( ;i < len;++ i)
x = x*10 + input[i] - '0';
cout << 'R' << x << 'C' << y << '\n';
return;
}
void b2a(void){
int i,l = 0,ix = 0;
char x[100005];
int y = 0;
memset(x,'@',sizeof(x));
for(i = 1;!(ischar(input[i]));++ i)
y = y*10 + input[i] - '0';
for(++ i;i < len;++ i)
ix = ix*10 + input[i] - '0';
while(ix > 0){
x[l] = ix % 26 + '@';
if(x[l] == '@'){
x[l] = 'Z';
x[l+1] --;
}
++ l;
ix /= 26;
}
if(x[l-1] == '@')
-- l;
for(i = l-1;i >= 0;-- i)
cout << x[i];
cout << y << '\n';
return;
}
void solve(void){
bool d = true;
len = 0;
cin >> input;
for(len = 1;input[len] != '\0';++ len)
if(ischar(input[len]) && !(ischar(input[len-1])))
d = false;
if(d)
a2b();
else
b2a();
return;
}
int main(void){
int i,n;
cin >> n;
for(i = 0;i < n;++ i)
solve();
return 0;
}