链接:
https://codeforces.com/problemset/problem/1352/B
题意
多组案例,给你一个n和k,问能否有k个只有奇数或者只有偶数的和为n?(答案合理即可)
1 ≤ n ≤ 1e9
1 ≤ k ≤ 100
Example
input
8
10 3
100 4
8 7
97 2
8 8
3 10
5 3
1000000000 9
output
YES
4 2 4
YES
55 5 5 35
NO
NO
YES
1 1 1 1 1 1 1 1
NO
YES
3 1 1
YES
111111110 111111110 111111110 111111110 111111110 111111110 111111110 111111110 111111120
解析
题意很清晰,就是一个数能否全由奇数构成或者全由偶数构成,那只要假设前面k -1个数都是1或者2,来判断剩下来的第k个数值的奇偶性是否和前面的数一致即可。
#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
int _;
cin >> _;
while (_--)
{
ll n, k;
cin >> n >> k;
ll t1 = k - 1, t2 = 2 * (k - 1);
t1 = n - t1, t2 = n - t2;
if (t1 & 1 && t1 > 0)
{
cout << "Yes" << endl;
for (int i = 0; i < k - 1; i++)
{
cout << 1 << ' ';
}
cout << t1 << endl;
}
else if (!(t2 & 1) && t2 > 0)
{
cout << "Yes" << endl;
for (int i = 0; i < k - 1; i++)
{
cout << 2 << ' ';
}
cout << t2 << endl;
}
else cout << "No" << endl;
}
return 0;
}