码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces---1B

时间:2016-08-17 22:40:04      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

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
 

关键在:十进制转换二十六制

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include<vector>
#include<queue>
#include<algorithm>

using namespace std;
typedef long long LL;

const int maxn=100005;
const int INF=0x3f3f3f3f;

char str[maxn];
int len;

void Tran(int n)
{
    if(n>26)
        Tran((n-1)/26);

    printf("%c", (n-1)%26+A);
}
void solve1()
{
    int k;

    for(int i=0; i<len; i++)
    {
        if(str[i]==C)
        {
            k=i;
            break;
        }
    }

    int Hang=0, Lie=0;
    for(int i=1; i<k; i++)
        Hang=Hang*10+(str[i]-0);

    for(int i=k+1; i<len; i++)
        Lie=Lie*10+(str[i]-0);

    Tran(Lie);
    printf("%d\n", Hang);
}

void solve2()
{
    int k;
    for(int i=0; i<len; i++)
    {
        if(isdigit(str[i]))
        {
            k=i;
            break;
        }
    }

    int Hang=0, Lie=0;
    for(int i=k; i<len; i++)
        Hang=Hang*10+(str[i]-0);

    Lie=str[0]-@;
    for(int i=1; i<k; i++)
        Lie=Lie*26+(str[i]-@);

    printf("R%dC%d\n", Hang, Lie);
}
int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%s", str);
        len=strlen(str);

        int f=0;
     /**此处也要注意,刚开始在这也wa了
            必须要有这一步判断,有可能。。。
            R12——R12C18
            R12C18——R12**/
if(str[0]==R&&isdigit(str[1])) { for(int i=2; i<len; i++) { if(str[i]==C) { f=1; break; } } } if(f) solve1(); else solve2(); } return 0; }

 

codeforces---1B

标签:

原文地址:http://www.cnblogs.com/w-y-1/p/5779447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!