1. 程式人生 > >CF每日一練 Codeforces Round #520 (Div. 2)

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; }
View Code

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