【题解】奇偶拆分
题意
给你一个和
,问
能否拆成
个奇数或
个偶数相加。若可以输出这
个数。
题解
我们可以进行两次判断,若是奇数这说明可以用
个
和
进行构造,在判断
是否是偶数,若其是偶数说明可以用
个
和
来构造。否则就说明无解,因为这是最小的解了,奇偶性可以用一个数
进行转移。
复杂度
时间复杂度
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,k;
scanf("%d%d",&n,&k);
int a=k-1;
int sum1=n-a,sum2=n-2*a;
if(sum2>0&&sum2%2==0)
{
printf("Yes\n");
for(int i=1;i<=a;i++)
printf("2 ");
printf("%d\n",sum2);
}
else if(sum1>0&&sum1%2==1)
{
printf("Yes\n");
for(int i=1;i<=a;i++)
printf("1 ");
printf("%d\n",sum1);
}
else
printf("No\n");
}
}
三奇智元机器人科技有限公司公司福利 84人发布