Codeforces Round #640 (Div. 4) Editorial总结

A. Sum of Round Numbers
题意:给定一个数,要你这个数拆分成若干个数相加,每个数最多包含一个非0的数且在最高位.
水题,直接分离各位数即可

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define RG register int
#define ULL unsigned long long

int main()
{
    int T;
    cin>>T;
    while(T--){
        int num;
        cin>>num;
        int a[10]={0};
        int cnt=0;
        int p=10;
        while(num){
            a[cnt++]=num%p;
            num/=p;
        }
        int cc=0;
        for(int i=0;i<cnt;i++){
            if(a[i]!=0)cc++;
        }
        cout<<cc<<endl;
        for(int i=0;i<cnt;i++){
            if(a[i]!=0){cout<<a[i];for(int j=1;j<=i;j++)cout<<"0";cout<<" ";}
        }
        cout<<endl;
    }
    return 0;
}

B. Same Parity Summands
题意:给两个整数 n , k n,k n,k让你给 n n n拆分成k各数,要求是才分后的数要么全部位奇数,要么全部为偶数。
分类套讨论:
前提要求: k < = n k<=n k<=n

  1. n n n奇, k k k奇:至少可以拆成 k − 1 k-1 k1 1 1 1(奇数) 和 n + 1 − k n+1-k n+1k n , k n,k n,k为奇数, n − k n-k nk为偶 + 1 +1 +1 为奇数)
  2. n n n奇, k k k偶:假设按照1)的拆分方法, k − 1 k-1 k1 1 和 k − n + 1 1 和 k-n+1 1kn+1(为偶数)不满足,全偶数情况: k − 1 个 2 k-1个2 k12 ( n − 2 ∗ k + 2 ) (n-2*k+2) (n2k+2)(奇数) 无法拆解
  3. n n n 偶, k k k偶:同情况一。
  4. n n n 偶, k k k奇 尝试拆分一个奇数 1 然后转化为情况2显然否决; 考虑全偶 k − 1 个 2 k-1个2 k12 ( n − 2 ∗ k + 2 ) (n-2*k+2) (n2k+2)(偶数)且必须满足 ( n − 2 ∗ k + 2 ) > = 2 (n-2*k+2)>=2 (n2k+2)>=2即: n > = 2 ∗ k n>=2*k n>=2k

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define RG register int
#define ULL unsigned long long


int main()
{
    int T;
    cin>>T;
    while(T--){
        int n,k;
        cin>>n>>k;
        if(n<k){cout<<"NO\n";continue;}
        if(n%2){
            if(k%2){
                cout<<"YES\n";
                for(int i=1;i<=k-1;i++)cout<<"1 ";
                cout<<n+1-k;
            }
            else cout<<"NO";
        }
        else{
            if(k%2){
                if(2*k<=n){
                    cout<<"YES\n";
                    for(int i=1;i<=k-1;i++)cout<<"2 ";
                    cout<<n-2*k+2;
                }
                else cout<<"NO";
            }
            else{
                cout<<"YES\n";
                for(int i=1;i<=k-1;i++)cout<<"1 ";
                cout<<n-k+1;
            }
        }
        cout<<endl;
    }
    return 0;
}

C. K-th Not Divisible by n
直接推公式
代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define RG register int
#define ULL unsigned long long


int main()
{
    int t;
    cin>>t;
    while(t--){
        LL k,n;
        cin>>k>>n;
        LL a=(n/(k-1)*k);
        LL b=n%(k-1);
        if(b==0)a--;
        else a+=b;
        cout<<a<<endl;
    }
    return 0;
}

D. Alice, Bob and Candies
模拟题,直接模拟即可

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define RG register int
#define ULL unsigned long long

int a[1010];
int main()
{
    int T;
    cin>>T;
    while(T--){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        int A=1,B=n,M_A=0,M_B=0,cnt=0;
        int P_A=-1,P_B=-1;//前一轮糖果
        while(1){
            //Alice:
            int sumA=0;
            while(1){
                sumA+=a[A++];
                if(sumA>P_B||A>B)break;
            }
            P_A=sumA;M_A+=sumA;
            cnt++;
            if(A>B)break;
            int sumB=0;
            while(1){
                sumB+=a[B--];
                if(sumB>P_A||A>B)break;
            }
            P_B=sumB;M_B+=sumB;
            cnt++;
            if(A>B)break;
        }
        cout<<cnt<<" "<<M_A<<" "<<M_B<<endl;
    }
    return 0;
}

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值