https://codeforces.com/problemset/problem/1352/B
思路:我们对奇数和偶数分别尝试一遍
奇数:判断 n - ( k-1 ) 是不是奇数,如果是,先输入 k-1 个1,再输出 n - ( k-1 )
偶数:判断 n - ( k-1 )*2 是不是偶数,如果是,先输入 k-1 个2,再输出 n - ( k-1 )*2
以下是代码实现:
#include<iostream>
using namespace std;
typedef long long ll;
void solved()
{
ll n,k;
cin>>n>>k;
ll a=n-(k-1);
if(a>0&&a%2==1)//尝试奇数
{
cout<<"YES"<<endl;
for(int i=1;i<=k-1;i++)
{
cout<<1<<" ";
}
cout<<a<<endl;
return ;
}
a=n-(k-1)*2;
if(a>0&&a%2==0)//尝试偶数
{
cout<<"YES"<<endl;
for(int i=1;i<=k-1;i++)
{
cout<<2<<" ";
}
cout<<a<<endl;
return ;
}
cout<<"NO"<<endl;
return ;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t;
cin>>t;
while(t--)
{
solved();
}
return 0;
}