Codeforces Round #640 (Div. 4)

Codeforces推出的小白场Div4,针对Rating 1400以下的,题目都比较水,就直接贴代码吧

A. Sum of Round Numbers

#include "bits/stdc++.h"
using namespace std;
int T;
int main()
{
    //freopen("in.txt","r",stdin);
    cin>>T;
    while(T--){
        string s;
        cin>>s;
        int cnt=0;
        for(int i=0;i<s.length();i++){
            if(s[i]>='1'&&s[i]<='9') cnt++;
        }
        cout<<cnt<<endl;
        int num=1;
        for(int i=0;i<s.length();i++){
            if(s[i]>='1'&&s[i]<='9'){
                cout<<s[i];
                for(int j=1;j<=s.length()-1-i;j++) cout<<"0";
                cout<<" ";
            }
        }
        cout<<endl;
    }
    return 0;
}

B. Same Parity Summands

#include "bits/stdc++.h"
using namespace std;
typedef long long LL;
int t;
LL n,k;
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d",&t);
    while(t--){
        scanf("%lld%lld",&n,&k);
        if(k>n){
            printf("NO\n");
        }else if(k==n){
            printf("YES\n");
            for(int i=1;i<=k;i++) printf("1 ");
            printf("\n");
        }else{
            if(n%2){
                if(k%2==0){
                    printf("NO\n");
                }else{
                    printf("YES\n");
                    for(int i=1;i<k;i++) printf("1 ");
                    printf("%lld\n",n-(k-1));
                }
            }else{
                if(k%2==0){
                    printf("YES\n");
                    for(int i=1;i<k;i++) printf("1 ");
                    printf("%lld\n",n-(k-1));
                }else{
                    if(n<2*k){
                        printf("NO\n");
                    }else{
                        printf("YES\n");
                        for(int i=1;i<k;i++){
                            printf("2 ");
                            n-=2;
                        }
                        printf("%lld\n",n);
                    }
                }
            }
        }
    }
    return 0;
}

C. K-th Not Divisible by n

#include "bits/stdc++.h"
using namespace std;
typedef long long LL;
int T;
LL n,k;
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d",&T);
    while(T--){
        scanf("%lld%lld",&n,&k);
        LL sum=k;
        LL mod=0;
        while(k>=n){
            LL tmp=k/n;
            sum+=tmp;
            //sum+=(mod+tmp)/n;
            mod=k%n;
            k=(mod+tmp);
           // sum+=mod;
        }
        printf("%lld\n",sum);
    }
    return 0;
}

D. Alice, Bob and Candies

#include "bits/stdc++.h"
using namespace std;
const int maxn=1000+10;
int T,n,a[maxn];
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        int i=1,j=n;
        int tmp=0;
        int preA=0,preB=0,totalA=0,totalB=0;
        while(i<=j){
            ++tmp;
            if(tmp%2){
                while(i<=j&&preA<=preB){
                    preA+=a[i];
                    i++;
                }
                totalA+=preA;
                preB=0;
                //i++;
            }else{
                while(i<=j&&preB<=preA){
                    preB+=a[j];
                    j--;
                }
                totalB+=preB;
                preA=0;
                //j--;
            }
        }
        printf("%d %d %d\n",tmp,totalA,totalB);
    }
    return 0;
}

E. Special Elements

#include "bits/stdc++.h"
using namespace std;
const int maxn=8000+10;
int dp[maxn],n,t,a[maxn],vis[maxn];
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d",&t);
    while(t--){
        memset(dp,0,sizeof(dp));
        memset(vis,0,sizeof(vis));
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            dp[i]=dp[i-1]+a[i];
            if(dp[i]>8000) continue;
            if(i!=1){
                vis[dp[i]]=1;
            }
        }
        for(int i=2;i<=n;i++){
            for(int j=i-1;j>=1;j--){
                if(dp[i]-dp[j-1]>8000) continue;
                vis[dp[i]-dp[j-1]]=1;
            }
        }
        int cnt=0;
        for(int i=1;i<=n;i++){
            if(vis[a[i]]) cnt++;
        }
        printf("%d\n",cnt);
    }
    return 0;
}

F. Binary String Reconstruction

#include "bits/stdc++.h"
using namespace std;
int T,n0,n1,n2;
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d",&T);
    while(T--){
        scanf("%d%d%d",&n0,&n1,&n2);
        string res="";
        if(n0){
            if(n0==1) res+="00";
            else{
                for(int i=0;i<=n0;i++) res+='0';
            }
        }
        int flag=0;
        if(n1){
            if(n1%2==0){
                flag=1; n1-=1;
            }
            if(n0){
                if(n1==1) res+="1";
                else{
                    res+='1';
                    n1-=2;
                    for(int i=1;i<=(n1+1)/2;i++) res+="01";
                }
            }else{
                if(n1==1){
                    res+="01";
                }else{
                    for(int i=1;i<=(n1+1)/2;i++) res+="01";
                }
            }
        }
        if(n2){
            if(n1==0){
                if(n2==1) res+="11";
                else{
                    for(int i=0;i<=n2;i++) res+='1';
                }
            }else{
                for(int i=1;i<=n2;i++) res+='1';
            }
        }
        if(flag){
            res+='0';
        }
        cout<<res<<endl;
    }
    return 0;
}

G. Special Permutation

#include "bits/stdc++.h"
using namespace std;
const int maxn=1000+10;
int t,n;
int vis[maxn];
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        if(n<=3) printf("-1\n");
        else{
            for(int i=n;i>=1;i--){
                if(i&1) printf("%d ",i);
            }
            printf("4 2 ");
            for(int i=6;i<=n;i+=2) printf("%d ",i);
            printf("\n");
        }
    }
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务