• (模拟、进制转换)


    Description

      在一些知名的表格处理系统中(比如:excel表格),我们经常用大写的字母来表示列,例如A表示第1列,B表示第2列,第26列用Z来表示,同时第27列我们用AA来表示,第28列我们用AB来表示,第29列我们用AC来表示,AZ表示第52列,ZZ之后我们就需要用3个字母来表示列了。
      行的表示比较简单,我们一般用正整数来表示,比如1就表示第1行,5就表示第5行,行和列一起表示成为类似BC23的情况,这个表示在第23行,第55列。
      有时候,我们的系统也会用RXCY的格式来表示,X和Y是整数,分别表示行号和列号。例如:R23C55表示的位置和之前那个例子是一样的。
      你的任务是写一个程序,将这些位置在两种不同的表示方法之间转化。

    Input

    第一行是一个正整数n(1<=n<=10^5), 表示测试数据的数量。
    接下来n行,每行一串字符,表示一个位置,输入保证所有的位置都是正确的,没有一个位置的行号或者列号超过10^ 6。

    Output

    输出n行,每行是对应的位置的转化结果。

    Sample Input
    2
    R23C55
    BC23
    
    Sample Output
    BC23
    R23C55

    题目链接:

    ********************************************

    题意:

    分析:

    AC代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cmath>
     6 #include <stack>
     7 #include <map>
     8 #include <vector>
     9 using namespace std;
    10 
    11 #define N 12000
    12 #define INF 0x3f3f3f3f
    13 
    14 char s[N];
    15 int len;
    16 
    17 void change1(int n)
    18 {
    19     if(n>26)
    20         change1((n-1)/26);
    21 
    22     printf("%c",(n-1)%26+'A');
    23 }
    24 
    25 void p(char s[],int z)
    26 {
    27     int hang=0,lie=0,i;
    28     for(i=1;i<z;i++)
    29         hang=hang*10+s[i]-'0';
    30     for(i=z+1;i<len;i++)
    31         lie=lie*10+s[i]-'0';
    32 
    33     change1(lie);
    34     printf("%d
    ", hang);
    35 }
    36 
    37 void rc(char s[])
    38 {
    39     int hang=0,i,z,lie;
    40 
    41     for(i=0;i<len;i++)
    42         if(s[i]>='0'&&s[i]<='9')
    43     {
    44         z=i;
    45         break;
    46     }
    47 
    48     for(i=z;i<len;i++)
    49         hang=hang*10+s[i]-'0';
    50 
    51      lie=s[0]-64;
    52      for(i=1;i<z;i++)
    53         lie=lie*26+s[i]-64;
    54 
    55      printf("R%dC%d
    ", hang,lie);
    56 }
    57 
    58 int main()
    59 {
    60     int w,T,i,z;
    61 
    62     scanf("%d", &T);
    63 
    64     while(T--)
    65     {
    66         w=0;
    67         scanf("%s", s);
    68         len=strlen(s);
    69 
    70         if((s[0]=='R')&&(s[1]>='0'&&s[1]<='9'))
    71         {
    72             for(i=2;i<len;i++)
    73                 if(s[i]=='C')
    74                 {
    75                     z=i;
    76                     w=1;
    77                     break;
    78                 }
    79         }
    80 
    81         if(w==1)
    82             p(s,z);
    83         else
    84             rc(s);
    85     }
    86     return 0;
    87 }
  • 相关阅读:
    关于python的装饰器(初解)
    关于python的创立模块和导入
    2019年春季学期第五周作业
    2019年春季学期第四周作业
    2019年春季学期第三周作业
    pytest
    Python中if __name__ == '__main__':的作用和原理
    oracle中的游标
    oracle中的一些小知识点
    python中str()与repr()函数的区别
  • 原文地址:https://www.cnblogs.com/weiyuan/p/5776444.html
Copyright © 2020-2023  润新知