题目大意:
从1到n选出最多个数,组成一个集合输出,k除外,并且选出的这个集合的任意一个子集中,不能等于k
解法:int temp = k/2 + bool(k%2); cout << n-temp<< endl;
具体:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while(t--)
{
int n, k;
cin >> n >> k;
int temp = k/2 + bool(k%2);
cout << n-temp << endl;
for(int i = temp;i <= n;i++){
if(i==k) continue;
cout << i << " ";
}
cout << endl;
}
return 0;
}