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

 

posted @ 2018-11-16 22:50  bluefly-hrbust  阅读(191)  评论(0编辑  收藏  举报