• 11-05-sdust-个人赛赛后随想


    第二次打个人赛

    这次居然打秃了,被A题卡的体无完肤.....结果之后转D题心里挂着A题...D题也被卡。

    然后第二天不甘心,翘课来机房敲昨天的题,结果两题完全重新敲,都是10分钟左右敲完代码,A题1掉

    然后D题还真有点说头...用了一上午的时间去找到哪错了,领悟到了不少东西

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    int check(string s){
        for (int i=2;i<s.size();i++){
            if (s[i]=='C') return 1;
        }
        return 0;
    }
    int work1(string s){
        int r,c;
        sscanf(s.c_str(),"R%dC%d",&r,&c);
        int a[1000];
        memset(a,0,sizeof(a));
        int top=0;
        while (c){
            a[top++]=c%26;
            c/=26;
            if (a[top-1]==0) a[top-1]=26,c--;
        }
        for (int i=top-1;i>=0;i--)
            putchar(a[i]+'A'-1);
        cout<<r<<endl;
    }
    int mypow(int t){
        int ans=1;
        for (int i=1;i<=t;i++)
            ans*=26;
        return ans;
    }
    int work2(string s){
        int a[1000];
        memset(a,0,sizeof(a));
        int top=0;
        while (s[top]>='A'&&s[top]<='Z')  a[top]=s[top],top++;
        int r,c=0;
        int t=0;
        for (int i=top-1;i>=0;i--)
            c+=(a[i]-'A'+1)*mypow(t++);
        char st[1000]={''};
        s.copy(st,s.size()-top,top);
        //st[s.size()]='';
        sscanf(st,"%d",&r);
        cout<<"R"<<r<<"C"<<c<<endl;
    }
    int main()
    {
        int testcase;
        cin>>testcase;
        while (testcase--){
            string s;
            cin>>s;
            if (s[0]=='R'&&s[1]>='0'&&s[1]<='9'&&check(s)) work1(s);
                else work2(s);
        }    
    }
    View Code

    首先现学现卖学会了怎么用sscanf()

    然后即使是字符数组,也一定要记得初始化

    最后也是最重要的一点,思路不清晰千万千万不要下手,否则敲到一半才发现是错的

  • 相关阅读:
    echarts 立体图
    css 设置边框边角
    PS2020 快速设置文字渐变
    idea 2019 永久破解
    使用VUE+element ui 实现输入框 占位符自动补全功能
    纯css 设置隔行样式
    CSS 设置float:left 导致后面元素错乱问题
    c primer plus 4编程练习
    c语言中以八进制数表示字符、并输出
    c语言中printf()函数的返回值
  • 原文地址:https://www.cnblogs.com/acbingo/p/4082521.html
Copyright © 2020-2023  润新知