【CodeForces】[1B]Spreadsheet
转换类的题目
难度还是有些的
不过一点一点写 感觉还好
可以当作26进制来方便思考转换
#include<stdio.h>
#include<string.h>
char s[10];
int l;
bool judge() {
if(s[0]=='R'&&s[1]<='9'&&s[1]>='0') {
for(int i=2; i<l; i++) {
if(s[i]=='C')
return true;
}
}
return false;
}
int f(int m,int k) {
int sum=1;
while(k--)
sum*=m;
return sum;
}
int main() {
int T;
scanf("%d",&T);
while(T--) {
scanf("%s",s);
l=strlen(s);
if(judge()) {
int tc=0;
for(int i=0; i<l; i++) {
if(s[i]=='C') {
tc=i;
break;
}
}
int a=0,b=0;
for(int i=1; i<tc; i++) {
a=a*10+s[i]-'0';
}
for(int i=tc+1; i<l; i++) {
b=b*10+s[i]-'0';
}
char res[10];
int ti=0;
while(b) {
if(b%26) {
res[ti++]='A'-1+b%26;
b/=26;
} else {
res[ti++]='Z';
b/=26;
b--;
}
}
for(int i=ti-1; i>=0; i--)
printf("%c",res[i]);
printf("%d\n",a);
} else {
int ti=0;
for(int i=0; i<l; i++)
if(s[i]<='9'&&s[i]>='0') {
ti=i;
break;
}
int x=0;
for(int i=ti; i<l; i++)
x=x*10+s[i]-'0';
printf("R%dC",x);
x=0;
int k=1;
for(int i=0; i<ti; i++) {
x+=(s[i]-'A'+1)*f(26,ti-k);
k++;
}
printf("%d\n",x);
}
}
return 0;
}