2013-2-22 ACM-第三次月赛 1002 表格

表格

Time Limit : 3000/1000ms (Java/Other)   Memory Limit :  65535/32768K (Java/Other)
Total Submission(s) : 0   Accepted Submission(s) : 0

Font: Times New Roman | Verdana | Georgia

Font Size:

Problem Description

Excel 中的列号是使用大写字母标识的,第一列是 A,第二列是 B,然后依次标下去,第 26 列是 Z。之后列号变为两位从 AA~ZZ 以字典顺序标识(AA,AB,AC...AZ,BA,BB,BC....ZZ) 。 再 之 后 列 号 变 为 三 位 大 写 字  母AAA---ZZZ(AAA,AAB,AAC...AAZ,ABA...ZZZ),依次类推。Excel 中的行号是使用数字标识的, 1 开始表示第 1 行, 2 行, 3 行……从第第一直标下去。现有一份非常大的表格数据,想得知某些单元格的内容,但是不知道 Excel 中这些单元格的行号和列号分别是什么,于是请你编写程序来帮帮他

Input

第一行两个正整数,数据表格允许的最大行列数 m 和要查询的单元格数量 n(n<= 100)。接下来 n 行,每行一条格式为“X NUM X NUM”的查询X 是一个大写字母‘R’或‘C’,表示行或列,NUM 为一个整数(0<= NUM <=  10^9)。

Output

对每一条查询,所在单元格的行号和列号,用一个空格隔开。若单元格不存在,输出-1。每条查询占一行。

Sample Input

100 3
R 23 C 26
R 94 C 27
R 59 C 102

Sample Output

23 Z
94 AA
-1

Author

OIer

Source

小KD的OI题库
 
 
错了n次,没有注意审题。
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
void f(int c){
    if(c){
        c--;
        f(c/26);
        printf("%c",c%26+65);
    }
}
int main(){
    int m,n,r,c;
    char c1,c2;
    scanf("%d%d",&m,&n);
    while(n--){
        scanf(" %c%d %c%d",&c1,&r,&c2,&c);
        if(r>0&&c>0&&r<=m&&c<=m){
            printf("%d ",c1=='R'?r:c);
            c2=='R'?f(r):f(c);
            printf("\n");
        }
        else
            printf("-1\n");
    }
}

你可能感兴趣的:(ACM,ACM)