fork download
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<string>
  4. #include<cstdio>
  5. #include<stdlib.h>
  6. #include<math.h>
  7.  
  8. #include<algorithm>
  9. #include<cstring>
  10. using namespace std;
  11.  
  12. // z=26 az=52 bz=78 cz=104 dz=130 zz=26*26 aaa=26*26+1 aab=26*26+2
  13. // aaz 26*27 abz 26*28 acz 26*29 azz 26*
  14.  
  15. int main()
  16. {
  17. char str[100],c;
  18. string newstr;
  19. int t,i,l,row,num;
  20. int x,sec;
  21. scanf("%d",&t);
  22. while(t--)
  23. {
  24. newstr.clear();
  25. scanf("%s",&str);
  26. int l=strlen(str);
  27. row=0; num=0;
  28. // R23C1000
  29. if(str[0]=='R' && (str[1]-'0')>=0 && (str[1]-'0')<=9)
  30. { int x=0;;
  31. for(i=l-1;i>=0;i--)
  32. { if(str[i]=='C') { sec=i; break; }
  33. num+=(str[i]-'0')*pow(10,x); x++;
  34. }
  35. x=0;
  36. for(i=sec-1;i>=0;i--)
  37. {
  38. if(str[i]=='R') break;
  39. // cout<<i<<endl;
  40. row+=(str[i]-'0')*pow(10,x); x++;
  41. }
  42.  
  43. if(num%26==0) { newstr.push_back('Z'); num=num/26 - 1; }
  44. else { sec=num%26; c=sec+64; newstr.push_back(c); num=num/26; }
  45.  
  46. while(num>0)
  47. {
  48. if(num==26)
  49. { newstr.push_back('Z'); break; }
  50. sec=num%26;
  51. if(sec==0) c='Z';
  52. else c=sec+64;
  53.  
  54. newstr.push_back(c);
  55. num=num/26;
  56. }
  57.  
  58. reverse(newstr.begin(),newstr.end());
  59. cout<<newstr<<row<<endl;
  60. }
  61. // AAZ23
  62. else
  63. {
  64. x=0;
  65. for(i=strlen(str)-1;((str[i]-'0')>=0 && (str[i]-'0')<=9);i--)
  66. { row+=(str[i]-'0')*pow(10,x); x++; }
  67.  
  68. x=0;
  69. for(;i>=0;i--)
  70. { num+=(str[i]-64)*pow(26,x); x++; }
  71.  
  72.  
  73. printf("R%dC%d\n",row,num);
  74. }
  75. }
  76. return 0;
  77. }
Success #stdin #stdout 0s 3280KB
stdin
2
R23C55
BC23
stdout
BC23
R23C55