zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    springboot属性类自动加载配置文件中的值
    mysql修改root密码
    idea各种图标说明
    nginx安装配置
    notepad++下载32位,安装插件管理
    crontab 定时执行脚本出错,但手动执行脚本正常
    jenkins安装配置
    VirtualBox从USB设备(PE)启动图文教程
    如何卸载windows的服务?卸载服务?
    在Windows的CMD中如何设置支持UTF8编码?
  • 原文地址:https://www.cnblogs.com/biu-biu-biu-/p/5777208.html
Copyright © 2011-2022 走看看