【思维】B. Same Parity Summands

Codeforces Round #640 (Div. 4)
B. Same Parity Summands

题意:给定和n与数字个数k,问能否有k个偶数/奇数之和为n

思路:先填k-1个1或者k-1个2,再看最后剩下的数是否大于零且为同奇/偶数就可。如果两个都不行,那么就是NO

#include<iostream>
#include<string>
#include<algorithm>
#include<math.h>
#include<cstring>
#include<set>
using namespace std;
int a[1000 + 10];
int b[1000 + 10];
int main()
{
	int t;
	cin >> t;
	while (t--) {
		int n, k;
		cin >> n >> k;
		int num = n - (k - 1);
		if (num > 0&&num%2!=0) {
			cout << "YES" << endl;
			for (int i = 1; i <= k - 1; i++) cout << "1 ";
			cout << num << endl;
			continue;
		}
		num = n - (k - 1) * 2;
		if (num > 0&&num%2==0) {
			cout << "YES" << endl;
			for (int i = 1; i <= k - 1; i++) cout << "2 ";
			cout << num << endl;
			continue;
		}
		cout << "NO" << endl;
	}
	return 0;
}
原文地址:https://www.cnblogs.com/streamazure/p/12864959.html