zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    JavaScript 事件
    Docker 部署asp.netcore
    Docker 安装
    JavaScript 窗口操作
    JavaScript 定时器
    JavaScript Dom
    Javascript try catch es5标准模式
    JavaScript 数组去重
    JavaScript 返回具体类型方法
    mysql 触发器
  • 原文地址:https://www.cnblogs.com/qingoba/p/13068829.html
Copyright © 2011-2022 走看看