zoukankan      html  css  js  c++  java
  • NYOJ 303 序号互换(规律)河南第四届ACM省赛

    序号互换

    时间限制:1000 ms  |  内存限制:65535 KB

    难度:2

    描述

    Dr.Kong设计了一个聪明的机器人卡多,卡多会对电子表格中的单元格坐标快速计算出来。单元格的行坐标是由数字编号的数字序号,而列坐标使用字母序号。观察字母序号,发现第1列到第26列的字母序号分别为A,B,…,Z,接着,第27列序号为AA,第28列为AB,依此类推。

    若给Dr.Kong的机器人卡多一个数字序号(比如32),它能很快算出等价的字母序号(即AF),若给机器人一个字母序号(比如AA)),它也能很快算出等价的数字序号(27),你能不能与卡多比试比试,看谁能算得更快更准确。

    输入

    第一行: N 表示有多少组测试数据。 
    接下来有N行, 每行或者是一个正整数,或者是一个仅由大写字母组成的字符串。
    输入保证,所有数字序号和字母序号对应的数字序号均 ≤ 2*10^9

    输出

    对于每一行测试数据,输出一行。如果输入为一个正整数序号,则输出等价的字母序号;如果输入为字符串,则输出等价的数字序号。

    样例输入

    3
    27
    G
    AA

    样例输出

    AA
    7
    27

    来源

    第四届河南省程序设计大赛

     解题报告:这道题是一道找规律的题,字母到数字或数字到字符的转化,感觉挺像进制转换的,

    代码如下:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
    const int MAX = 5010;
    int N, len;
    char str[MAX];
    void Isnum()
    {
        int i, num, count;
        char ans[MAX];
        num = 0;
        for (i = 0; i < len; ++ i)//把字符串先转换成数字
        {
            num = num * 10 + str[i] - '0';
        }
        count = 0;//存储转变成字母需要的位数
        while (num)
        {
            if (num % 26)
            {
                ans[count] = num % 26 + 'A' - 1;
                num = num / 26;
            }
            else
            {
                ans[count] = 'Z';
                num = num / 26 - 1;
            }
            count ++;//位数加一
        }
        for (i = count - 1; i >= 0; --i)//输出结果
        {
            printf("%c", ans[i]);
        }
        printf("\n");
    }
    void Ischar()
    {
        int i, ans;
        ans = 0;
        for (i = len - 1; i >= 0; -- i)//将字符转化成数字
        {
            ans += (str[i] - 'A' + 1) * pow(26, len - i - 1);
            
        }
        printf("%d\n", ans);
    }
    int main()
    {
        scanf("%d", &N);
        while (N --)
        {
            getchar();
            scanf("%s", str);
            len = strlen(str);
            if (str[0] >= '0' && str[0] <= '9')
            {
                Isnum();//是数字的情况下
            }
            else if (str[0] >= 'A' && str[0] <= 'Z')
            {
                Ischar();//是字符的情况下
            }
        }
        return 0;
    }
            
    
        
  • 相关阅读:
    windows下 安装 rabbitMQ 及操作常用命令
    C#中关于DataGridView行和列的背景色-前景色设置
    使用Linq判断DataTable数据是否重复
    C#用mouse_event模拟鼠标点击的问题
    ApartmentState.STA
    使用WebBrowser,内存一直增加的解决办法
    HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
    您访问的URL地址不被允许。
    CMSIS-DAP for STLink V2.1 and STLink v2.1 mini adapter
    DG449 High Voltage Single SPDT Analog Switch in SOT23-8
  • 原文地址:https://www.cnblogs.com/lidaojian/p/2469078.html
Copyright © 2011-2022 走看看