题意:将两种不同表达方式进行转换,即26进制与10进制的转换,特殊的是,比如:26用Z表示,27用AA表示,即没有零。
题目链接:http://codeforces.com/problemset/problem/1/B
#include <stdio.h> #include <string.h> char str[100000]; void zhuan1(char str[],int len) { int s1=0; int s2=0; sscanf(str,"R%dC%d",&s1,&s2); char ch=‘A‘; int st[100000]; int k=0; while(s2) { int a=s2%26; s2/=26; if(a==0) { s2--; a=26; } st[k++]=a; } for(int i=k-1;i>=0;i--) { printf("%c",st[i]+ch-1); } printf("%d\n",s1); } void zhuan2(char str[],int len) { int i=0; int s1=0,s2=0; while(str[i]>=‘A‘&&str[i]<=‘Z‘) { i++; } sscanf(str+i,"%d",&s2); for(i=0;str[i]>=‘A‘&&str[i]<=‘Z‘;i++) { s1=s1*26+(str[i]-‘A‘+1); } printf("R%dC%d\n",s2,s1); } int main() { int t; scanf("%d",&t); while(t--) { memset(str,0,sizeof(str)); scanf("%s",str); int len=strlen(str); if(str[0]==‘R‘&&str[1]>=‘0‘&&str[1]<=‘9‘&&len>2) { int flag=0; for(int i=2;i<len;i++) { if(str[i]==‘C‘) { flag=1; break; } } if(flag) zhuan1(str,len); else zhuan2(str,len); } else { zhuan2(str,len); } } return 0; }
时间: 2024-10-22 01:33:13