• Week13 作业 A -CodeForces


    题目描述:

    给定N和K,是否存在K个奇偶性相同的正整数,使得K个数的和是N,是Special Judge

    思路:

    • 首先考虑如果存在可行方案,如何找到K个数?其实可以想到,如果K个数都是奇数,则一定能表示成K-1个1和N-K*1,比如N=100,K=6,则一定能表示成1 1 1 1 1 95;如果K个数是偶数,则一定能表示成2 2 2 2 2 2.....N-2*(K-1);
    • 那么怎么判断存不存在可行方案?就按上述方法看N-K是不是奇数;N-2*(K-1)是不是偶数,即可
    • 注意边界条件:如果K个数都是奇数,则N不能比K大,因为K个数至少都是1;如果K个数都是偶数,则N不能比K*2大,因为K个数至少都是2

    代码:

    #include <cstdio>
    #include <iostream>
    int N, K;
    using namespace std;
    
    void print(int t)
    {
    	printf("YES
    ");
    	for (int i = 1; i <= K - 1; i++)
    		printf("%d ", t);
    	printf("%d
    ", N - (K - 1) * t);
    }
    
    int main()
    {
    	int T;
    	cin >> T;
    	while (T--)
    	{
    
    		scanf("%d %d", &N, &K);
    		if ( ( (N - (K - 1) * 1) & 1 ) == 1)
    		{
    			if(N<K)
    			{
    				cout<<"NO"<<endl;
    				continue; 
    			}
    			 
    			print(1);
    			continue;
    		}
    		if ( ( (N - (K - 1) * 2) & 1 ) == 0)
    		{
    			if(N<K*2)
    			{
    				cout<<"NO"<<endl;
    				continue; 
    			}
    			print(2);
    			continue;
    		}
    		cout << "NO" << endl;
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    区块链技术驱动金融.mobi
    ProcessExplorer 工具下载
    免费的论文查重网站
    接口可以继承接口吗?
    比较中的自动拆装箱
    Java语言中的异常处理
    Java类加载过程
    通过反射访问父类的私有成员
    final关键字详解
    MVC 控制台 +log4net 存入数据库
  • 原文地址:https://www.cnblogs.com/qingoba/p/13068829.html
Copyright © 2020-2023  润新知