#include  < iostream >
#include 
< string >
#include 
< vector >
#include 
< cmath >
using   namespace  std;

int  main()
{
    
char input[21];
    
while (scanf("%s",input)!=EOF)
    
{
        
char row[10]="",coll[10]="";
        
long int col;
        
char output[21]="";
        
if (input[1]=='0'&&input[3]=='0')
             
break;
        
int add=strchr(input,'C')-input;
        strncpy(row,input
+1,add-1);
        
int len=strlen(input)-add-1;
        strncpy(coll,input
+add+1,len);
        col
=(long int)atol(coll);
        
int i=0;
        
while (col)
        
{
            output[i
++]='A'+(col-1)%26;   //注意要-1,因为A此时代表的相当于十进制中的0
            col=(col-1)/26;               //当col取26时,应该给Z而不是AA
        }

        
int olen=strlen(output);
        
for (int j=0;j<olen/2;j++)
        
{
            
char temp=output[j];
            output[j]
=output[olen-j-1];
            output[olen
-j-1]=temp;
        }

        printf(
"%s%s\n",output,row);
    }

}




一道我虽然做出来,但自己还没领悟其转换本质的题,也许是测试数据太弱才让过的。

从1开始到26,分别用A到Z表示,27则是AA。。。。相当于十进制里面没有0