• CodeForces 1B 模拟题。


    H - 8
    Time Limit:10000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u

    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<stdio.h>
    #include<string.h>
    #include<math.h>

    #define max(a, b)(a > b ? a : b)
    #define N 110000
    char s[N], a[N];
    int b[N];

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

    printf("%c",(n-1)%26+'A');
    }

    int main()
    {

    int i, t, j, k, g, h, f, d, ans, n, m;

    scanf("%d", &t);

    while(t--)
    {
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));


    scanf("%s", s);

    k = j = g = f = d = 0;

    for(int i=0; s[i]; i++)//数字字母分开存, 用j即数字的个数判断是那种转换类型。
    {
    if(s[i]>='0'&&s[i]<='9')
    {
    b[j] = b[j] * 10 + s[i] -'0';
    f = 1;
    }

    else if(s[i]>='A'&&s[i]<='Z')
    {
    a[k++] = s[i];

    if(f==1)
    j++;
    }
    }

    if(j == 0)//把用字母表示的列数转换成数字。
    {
    ans = 0;

    for(i = 0; a[i]; i++)
    {
    ans = ans * 26 + a[i] - 'A' + 1;//类似于把字符类型的数字转换成数字, 26一个周期。

    }

    printf("R%dC%d ", b[0], ans);
    }
    else//把用数字表示的列数转换成字母。
    {
    K(b[1]);
    printf("%d ",b[0]);
    }

    }
    return 0;
    }

     
  • 相关阅读:
    .Net平台AOP技术概览
    ARP&ICMP
    .NET面向上下文、AOP架构模式(概述)
    Attribute在拦截机制上的应用
    .NET面向上下文、AOP架构模式(实现)
    使用RequireJS优化Web应用前端
    使用asp.net MVC4创建兼容各种设备显示的web应用程序
    entity framework for asp.net mvc
    jquery多功能软键盘插件
    优美登录页面源码(一)
  • 原文地址:https://www.cnblogs.com/dll6/p/5777218.html
Copyright © 2020-2023  润新知