mananraheja

CodeForces Problem - 1B - Spreadsheet

Oct 11th, 2019
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.85 KB | None | 0 0
  1. /* CodeForces - 1B - spreadsheet */
  2.  
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5.  
  6. unsigned long long int findCol(string alpha) {
  7.     unsigned long long int ans = 0;
  8.     for (int i = 0; i < alpha.length(); i++) {
  9.         ans += (alpha[i] - 64) * pow(26, alpha.length() - 1 - i);
  10.     }
  11.     return ans;
  12. }
  13.  
  14. string colFirst(unsigned long long int col) {
  15.     string ans = "";
  16.     while (col) {
  17.         col--;
  18.         ans += 'A' + col % 26;
  19.         col /= 26;
  20.     }
  21.     string answer = "";
  22.     for (int i = ans.length() - 1; i >= 0; i--) {
  23.         answer += ans[i];
  24.     }
  25.     return answer;
  26. }
  27.  
  28. bool checkType(string s) {
  29.     if (s.length() > 2) {
  30.         for (int i = 2; i < s.length(); i++) {
  31.             if (s[i] == 'C') {
  32.                 return false;
  33.             }
  34.         }
  35.     }
  36.     return true;
  37. }
  38.  
  39. int main() {
  40.     int n;
  41.     cin >> n;
  42.     string s;
  43.     while (n--) {
  44.         cin >> s;
  45.         if (s[0] == 'R') {
  46.             bool type = checkType(s);       // 0 - RxCy, 1 - otherwise
  47.             if (type) {                     // 1 - otherwise
  48.                 string alpha = "";
  49.                 int num = 0;
  50.                 for (int i = 0; i < s.length(); i++) {
  51.                     if (s[i] >= 65 && s[i] <= 90) {
  52.                         alpha += s[i];
  53.                     }
  54.                     else {
  55.                         if (num) {
  56.                             num *= 10;
  57.                         }
  58.                         num += s[i] - 48;
  59.                     }
  60.                 }
  61.                 cout << "R" << num << "C" << findCol(alpha) << endl;
  62.             }
  63.             else {                          // 0 - RxCy
  64.                 unsigned long long int row = 0, col = 0, index;
  65.                 for (int  i = 2; i < s.length() - 1; i++) {
  66.                     if (s[i] == 'C') {
  67.                         index = i;
  68.                         break;
  69.                     }
  70.                 }
  71.                 for (int i = 1; i < index; i++) {
  72.                     row *= 10;
  73.                     row += (s[i] - 48);
  74.                 }
  75.                 for (int i = index + 1; i < s.length(); i++) {
  76.                     col *= 10;
  77.                     col += (s[i] - 48);
  78.                 }
  79.                 cout << colFirst(col) << row << endl;
  80.             }
  81.         }
  82.         else {                              // Definitely type 1
  83.             string alpha = "";
  84.             int num = 0;
  85.             for (int i = 0; i < s.length(); i++) {
  86.                 if (s[i] >= 65 && s[i] <= 90) {
  87.                     alpha += s[i];
  88.                 }
  89.                 else {
  90.                     if (num) {
  91.                         num *= 10;
  92.                     }
  93.                     num += s[i] - 48;
  94.                 }
  95.             }
  96.             cout << "R" << num << "C" << findCol(alpha) << endl;
  97.         }
  98.     }
  99.     return 0;
  100. }
Add Comment
Please, Sign In to add comment