https://codeforces.com/problemset/problem/1352/B
就是构造分为以下几种情况:
- 要分为m个数,分
m-1
个1 剩下的数如果还是奇数说明可以,那么就输出 - 要分为m个数,分
m-1
个2 剩下的数如果还是偶数说明可以,那么就输出 - 其它的就是不可行的。
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
int t; cin>>t;
while(t--)
{
int n,m; cin>>n>>m;
if((n-(m-1)*2)>0 && (n-(m-1)*2)%2==0)
{
puts("YES");
for(int i=1;i<=m-1;i++) cout<<"2 ";
cout<<n-(m-1)*2<<endl;
}else if((n-(m-1)*1)>0 && (n-(m-1)*1)%2)
{
puts("YES");
for(int i=1;i<=m-1;i++) cout<<"1 ";
cout<<n-(m-1)*1<<endl;
}
else puts("NO");
}
return 0;
}