• CodeForces 1B


    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
    模拟题。
    把所有情况都考虑到就好。
    注意可能出现
     AAA12转化为R12C703
    R12C703转化为 AAA12一类的。
    #include <cstring>
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cmath>
    #include <stack>
    #include <vector>
    #include <queue>
    #include <cmath>
    using namespace std;
    #define N 10500
    void K(int n)
    {
        if(n>26)
            K((n-1)/26);
    
        printf("%c",(n-1)%26+'A');
    }//利用递归
    typedef long long LL;
    int main()
    {
        int t;
        char s[N];
        char str[N];
        int a[N];
        scanf("%d", &t);
        while(t--)
        {
            memset(str,0,sizeof(str));
            memset(s,0,sizeof(s));
            memset(a,0,sizeof(a));
    
            scanf("%s",str);
            int len = strlen(str);
            int j = 0;
            int k = 0;
    
            int f = 0;
            for(int i=0; i<len; i++)
            {
                if(str[i]>='0'&&str[i]<='9')
                {
                    a[j] = a[j] * 10 + str[i] -'0';
                    f = 1;
                }
    
                else if(str[i]>='A'&&str[i]<='Z')
                {
                    s[k++] = str[i];
                    if(f==1)
                        j++;
                }
            }
            int d = k;
    ///s储存了所有的字母;a储存了所有的数字。
    
            if(j==1&&d==2)
            {
                K(a[1]);
                printf("%d
    ",a[0]);
    
            }//转化为AAA12类的
    
            else
            {
                k = s[0] - 'A' + 1;
                for(int i=1; i<d; i++)
                    k = k * 26 + s[i] - 'A' + 1;
                printf("R%dC%d
    ",a[0],k);
            }///转化为R12C703类的
    
        }
        return 0;
    }
  • 相关阅读:
    hdu 5001 从任意点出发任意走d步不经过某点概率
    hdu 5007
    hdu 5009 离散化
    hdu 5011 Nim+拿完分堆
    thinkphp 删除多条记录
    thinkphp 实现无限极分类
    图片生成唯一的名字
    html 标签学习
    PHP比较运算!=和!==
    php使用 set_include_path
  • 原文地址:https://www.cnblogs.com/biu-biu-biu-/p/5777208.html
Copyright © 2020-2023  润新知