#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