CodeFoeces-1B

题目

原题链接:B. Spreadsheets

题意

26进制转换,若格式为R(X)C(Y),这输出26进制的Y和10进制X,否则输出10进制R(X)C(Y)。

代码

#include<bits/stdc++.h>
using namespace std;
char s[11000];
void solve1() {
    int l=strlen(s);
    int num1=0,num2=0;
    int i=1;
    while(s[i]>='0' && s[i]<='9') {
        num2=num2*10+s[i]-'0';
        i++;
    }
    for(i++; i<l; i++) {
        num1=num1*10+s[i]-'0';
    }
    char tmp[10000];
    int cnt=0;
    while(num1) {
        if(num1%26==0) {
            tmp[cnt++]='Z';
            num1=num1/26-1;
        } else {
            tmp[cnt++]=64+num1%26;
            num1/=26;
        }
    }
    for(i=cnt-1; i>=0; i--) {
        printf("%c",tmp[i]);
    }
    printf("%d\n",num2);
}
void solve2() {
    int l=strlen(s);
    int num1=0,num2=0;
    
    int i=0;
    while(s[i]>='A' && s[i]<='Z'){
        num1=num1*26+s[i]-'A'+1;
        i++;
    }
    for(;i<l;i++){
        num2=num2*10+s[i]-'0';
    }
    printf("R%dC%d\n",num2,num1);
}
int main() {
    int n;
    scanf("%d",&n);
    while(n--) {
        int flag=0;
        scanf("%s",s);
        for(int i=0; i<strlen(s); i++) {
            if(s[i]<='9' && s[i]>='0' && s[i+1]>='A' && s[i+1]<='Z') {
                flag=1;
            }
        }
        if(flag)
            solve1();
        else
            solve2();
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容