CF每日一練 Codeforces Round #520 (Div. 2)
阿新 • • 發佈:2018-11-16
比賽過程總結:過程中有事就玩手機了,後面打的狀態不是很好,A題理解錯題意,表明了內心不在狀態,B題想法和思路都是完全正確的,但是並沒有寫出來,因為自己程式碼能力不強,思路不是特別清晰,把程式碼後面寫亂了,而且出現了手誤,這非常不應該。
反思:打下來應該想好,打程式碼的時候一氣呵成,儘量避免調BUG,看錯題這種低階錯誤,每天比賽時應該關閉手機。
本場目標:補題A-B-C-D-E
A-
#include<iostream> #include<stdio.h> #include<string.h> #includeView Code<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; }View Code