C1. k-LCM (easy version)
题面:
中文题意:
实际上就是说,给你n,k两个正整数,要求构造出一个元素个数为k,且数组元素和为n的数组,要求所有元素最小公倍数<=N/2。
此处降低难度,k==3。
思路:
范围在此,有事没事先开个ll。
思路是这样的,首先剪枝情况。
- n偶数且为4倍数的时候,n/4,n/4,n/2。
- n偶数但非4倍数,2,n/2-1,n/2-1。
- n为奇数,1,(n-1)/2,(n-1)/2。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,k;
cin>>n>>k;
if(n%2!=0)
{
cout<<n/2<<' '<<n/2<<' '<<'1'<<endl;
}
else
{
if((n-2)/2==1||((n-2)/2)%2==0)
{
cout<<(n-2)/2<<' '<<(n-2)/2<<' '<<2<<endl;
}
else
{
if(n%8==0)
cout<<n/2<<' '<<n/4<<' '<<n/4<<endl;
else
{
cout<<(n-4)/2<<' '<<(n-4)/2<<' '<<4<<endl;
}
}
}
}
return 0;
}