coderforce 1B-Spreadsheet
26144 ワード
十進法と26進数に似た進数の間で変換され、b--の場合は最初は考えられず、葛藤していた.
#include<stdio.h>
#include<stdlib.h>
int main(){
int n,i,j,flag1,flag2,a,b,k;char c[20],d[20],t[10];
scanf("%d",&n);
while(n--){
scanf("%s",c);
i=0;flag1=0,flag2=0;
while(c[i]>='A'&&c[i]<='Z')i++;
if(i>=1)flag1=1;
while(c[i]>='0'&&c[i]<='9')i++;
if(c[i]=='\0')flag2=1;
if(flag1==1&&flag2==1){
i=0,a=0,b=0,j=0,k=0; d[k++]='R';
while(c[i]>='A'&&c[i]<='Z'){ a*=26; a+=(c[i++]-'A'+1);
}
while(c[i]!='\0'){ b*=10; b+=(c[i++]-'0');
}
while(b>0){ t[j++]=(b%10)+'0'; b/=10;
}
j--;
while(j>=0){ d[k++]=t[j--];
}
j=0; d[k++]='C';
while(a>0){ t[j++]=a%10+'0'; a/=10;
}
j--;
while(j>=0){ d[k++]=t[j--];
}
d[k]='\0';
puts(d);
}else{
i=1,a=0,b=0,j=0,k=0;
while(c[i]>='0'&&c[i]<='9'){ a*=10; a+=(c[i++]-'0');
}
i++;
while(c[i]>='0'&&c[i]<='9'){ b*=10; b+=(c[i++]-'0');
}
while(b>0){
if(b%26==0){ t[j++]='Z'; b/=26;b--;}
else { t[j++]='A'+b%26-1; b/=26; }
}
j--;
while(j>=0){ d[k++]=t[j--]; }
j=0;
while(a>0){ t[j++]=a%10+'0'; a/=10;
}
j--;
while(j>=0){ d[k++]=t[j--]; }
d[k]='\0';
puts(d);
}
}
return 0;
}