2020 CodeJam Round 1A

Kelli ·
更新时间:2024-09-20
· 935 次阅读

前言

第一道题的第二个低保都没吃到手,第二道题也就吃了两个低保,太菜了。最后的测试点看起来不是思维就是暴力,都不想写了,算了,没资格就没资格吧,来年再战

比赛链接

A Pattern Matching

在这里插入图片描述

//只吃到一个低保,第二个点写了好久写崩了,不想改了 #include #include using namespace std; int t,n; string buf[55]; int main() { ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); int kase=0; cin>>t; while(t--){ cin>>n; int sz=-1; string str,cur; for(int i=1;i>str; int now=str.size(); string res=""; for(int j=now-1;j>=0;j--){ res+=str[j]; } buf[i]=res; if(now>sz){ cur=res; sz=now; } } //cout<<cur<<endl; int flag=0; for(int i=1;i<=n;i++){ if(flag) break; if(buf[i].size()<sz){ for(int j=buf[i].size()-1;j<sz;j++) buf[i]+='*'; } for(int k=0;k<sz;k++){ if(buf[i][k]!=cur[k] && buf[i][k]!='*' && cur[k]!='*'){ flag=1; break; } } } cout<<"Case #"<<++kase<<": "; if(flag) cout<<"*"<=0;i--) if(cur[i]!='*') cout<<cur[i]; cout<<endl; } } return 0; } B Pascal Walk

在这里插入图片描述
1.对于杨辉三角,首先当n较小时,第i行的第二个数为i-1,那么我们一直取一半的1,后面直接跳到第二列。对于奇数,加一除以二求得mid;偶数直接除以二,然后奇数是直接跳到当前行的第二列,偶数是跳到下一行的第二列

2.当n<=998时,上面的规律输出了499个数。因此对999和1000要特判,我们只在中间多跳一次即可,当输出499个数时得到的结果为996,想办法加上3或者加上4即可

//吃低保得永生 #include using namespace std; int t,n,kase=0; int main() { ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>t; while(t--){ cin>>n; cout<<"Case #"<<++kase<<":"<<endl; if(n==1){ cout<<"1 1"<1 && n<=998){ if(n&1){ int mid=(n+1)/2; for(int i=1;i<=mid;i++) cout<<i<<" 1"<<endl; cout<<mid<<" 2"<<endl; }else{ int mid=n/2; for(int i=1;i<=mid;i++) cout<<i<<" 1"<<endl; cout<<mid+1<<" 2"<<endl; } }else if(n==999){ //498*2 = 996 + 3=999 ---498+1+1=500´Î cout<<"1 1"<<endl; cout<<"2 1"<<endl; cout<<"3 1"<<endl; cout<<"4 2"<<endl; for(int i=4;i<=498;i++) cout<<i<<" 1"<<endl; cout<<499<<" 2"<<endl; }else if(n==1000){ //498*2= 996 + 4=1000 ---498+1+1=500´Î cout<<"1 1"<<endl; cout<<"2 1"<<endl; cout<<"3 1"<<endl; cout<<"4 1"<<endl; cout<<"5 2"<<endl; for(int i=5;i<=498;i++) cout<<i<<" 1"<<endl; cout<<499<<" 2"<<endl; } } return 0; }
作者:Happig丶



round

需要 登录 后方可回复, 如果你还没有账号请 注册新账号