CF每日一练 Codeforces Round #520 (Div. 2)
比赛过程总结:过程中有事就玩手机了,后面打的状态不是很好,A题理解错题意,表明了内心不在状态,B题想法和思路都是完全正确的,但是并没有写出来,因为自己代码能力不强,思路不是特别清晰,把代码后面写乱了,而且出现了手误,这非常不应该。
反思:打下来应该想好,打代码的时候一气呵成,尽量避免调BUG,看错题这种低级错误,每天比赛时应该关闭手机。
本场目标:补题A-B-C-D-E
A-
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<map> #include<vector> #include<math.h> using namespace std; int a[1006]; int main(){ int n; while(~scanf("%d",&n)){ int flag=0; int ans=0; for (int i=1;i<=n;i++){ scanf("%d",&a[i]); } ans=0; int len=0; for (int i=1;i<n;i++){ if (a[i]+1==a[i+1] && flag==1){ len++; if (a[i+1]==1000){ len++; } }else if(a[i]+1==a[i+1] && flag==0){ if (a[i]==1){ len++; } if (a[i+1]==1000){ len++; } flag=1; }else if(a[i]+1!=a[i+1] && flag==1){ ans=max(ans,len); len=0; flag=0; } } ans=max(ans,len); printf("%d\n",ans); } return 0; }
B-
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; int e[1000]; int x[1000]; int kk; int upbit(int x) { int s=1; while(s<x) { s*=2; kk++; } return s; } int main() { int n; while(~scanf("%d",&n)) { int cnt=0; kk=0; int maxx=0; int ans=1; int ans_k=0; memset(e,0,sizeof(e)); memset(x,0,sizeof(x)); for(int i=2; i*i<=n; i++) { if(n%i==0) { ans*=i; e[++cnt]=i; } int k=0; while(n%i==0) { n/=i; k++; x[cnt]=k; maxx=max(k,maxx); } } if (n!=1) { e[++cnt]=n; x[cnt]=1; ans*=n; } if (maxx!=0) { int s=upbit(maxx); // cout<<maxx<<" "<<s<<endl; for (int i=1; i<=cnt; i++) { // cout<<x[i]<<endl; if (x[i]<s) { kk++; break; } } printf("%d %d\n",ans,kk); } else printf("%d 0\n",ans); } return 0; }
有不懂欢迎咨询
QQ:1326487164(添加时记得备注)