zoukankan      html  css  js  c++  java
  • 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()

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

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

  • 相关阅读:
    PS的使用[未完待续]
    Navicat破解方法【很靠谱】
    some blogs
    Linux curl命令详解
    api_automation_mysql
    linux 笔记
    pytest 笔记
    sel+python 基础
    postman 断言
    homebrew note
  • 原文地址:https://www.cnblogs.com/acbingo/p/4082521.html
Copyright © 2011-2022 走看看