Forbidden Integer
题目大意
给你三个整数,n,k,x从1到k之间选择一个不是x的若干数,组成n,每个除了x,其余每个数可以选任意多次
思路分析
如果可以选1的话,一定有解,否则的话,
可以讨论一下n的奇偶性,如果n是偶数的话,则可以用n/2个2组成n,
如果是奇数的话,则可以选n/2-1个2和3组成n,这样的话,如果可以满足这两中情况,
则有解,否则无解
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while(T --){
int n,k,x;
cin >> n >> k >> x;
if(k == 1 && x == 1) {
cout << "NO\n";
continue;
}
else {
if(x!=1){
cout << "YES\n";
cout << n << "\n";
for(int i = 0; i < n; i ++)
cout << "1 ";
cout << "\n";
}
else {
if(n % 2){
if(k >= 3) {
cout << "YES\n";
cout << n/2 << "\n";
for(int i = 1; i <= n/2 - 1; i ++)
cout << "2 ";
cout << "3";
cout << "\n";
}
else {
cout << "NO\n";
}
}
else {
cout << "YES\n";
cout << n/2 << "\n";
for(int i = 1; i <= n/2; i ++)
cout << "2 ";
cout << "\n";
}
}
}
}
return 0;
}