首页 > 代码库 > 11-05-sdust-个人赛赛后随想
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]={‘\0‘}; s.copy(st,s.size()-top,top); //st[s.size()]=‘\0‘; 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); } }
首先现学现卖学会了怎么用sscanf()
然后即使是字符数组,也一定要记得初始化
最后也是最重要的一点,思路不清晰千万千万不要下手,否则敲到一半才发现是错的
11-05-sdust-个人赛赛后随想
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。