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;
}