题目
算法 构造 时间复杂度
思路分析
异或从二进制的角度去考虑特殊值,当n为偶数的时候,n个1异或的结果是1,等式成立。
当偶数的时候1不成立,考虑其他的特殊值,基本就是0,1,2,3这几个数,n-2个2异或的结果是0,右边的式子大概率等于2,所以左边的式子应该凑出来2,左侧加一个1,一个3就完美符合。
代码
#include<iostream>
using namespace std;
int main()
{
int n;
int t;
cin >> t;
while (t--)
{
cin >> n;
if (n % 2 == 1)
{
for (int i = 0; i < n; i++) cout << 1 << " ";
cout << endl;
}
else
{
if (n == 2) cout << 1 << " " << 3;
else
{
cout << 1 << " " << 3<<" ";
for (int i = 0; i < n - 2; i++) cout << 2 << " ";
}
cout << endl;
}
}
}