题目大意:
#include <iostream> #include <cmath> #include <algorithm> #include <string> #include <cstring> #include <cstdio> #include <vector> #include <cstdlib> using namespace std; typedef long long LL; const LL INF = 0xffffff; const int maxn = 201315; const LL MOD = 1e9+7; void Putt(int C) { if(C == 0) return ; if(C%26 == 0) Putt((C-1)/26); else Putt(C/26); char ch; if(C%26 == 0) ch = ‘Z‘; else ch = C%26 + ‘A‘ - 1; printf("%c", ch); } void ChangeOne(char str[]) { int R, C; sscanf(str,"R%dC%d", &R, &C); Putt(C); printf("%d\n", R); } void ChangeTow(char str[]) { int num = 0, i; for(i=0; str[i] >= ‘A‘ && str[i] <= ‘Z‘; i++) { num = num*26 + str[i] - ‘A‘ + 1; } printf("R%sC%d\n",str+i, num); } bool Ok(char str[]) { if(str[0] == ‘R‘ && str[1] >= ‘0‘ && str[1] <= ‘9‘) { for(int i=1; str[i]; i++) { if(str[i] == ‘C‘) return true; } } return false; } int main() { int T; char str[105]; scanf("%d", &T); while(T--) { cin >> str; if(Ok(str)) ChangeOne(str); else ChangeTow(str); } return 0; } /* 26 Z 27 AA 53 BA BZ 78 CA 79 */
原文:http://www.cnblogs.com/chenchengxun/p/4836984.html