这道题最快速的方法就是利用0异或任何数都不会改变任何数的值的性质(0 ^ a = a),得到(n-1)个0异或n = n,n%n=0,所以数组只需要前n-1个数为0,第n个数为1即可解题

本人在这里给出自己的方法,虽然很拙笨,但也是自己亲自探索出来的规律(一般通过率高的题都有规律可以利用):

        规律:对于n为奇数,一种答案是最后一个元素必等于n,然后前n-1个元素全部取n-1即可(n-1是个偶数,偶数个相同的数进行异或,同归于尽,a^a = 0),最后0^n=n(其实我在想到这里的时候就能和其他题解思路殊途同归)

        对于n为偶数

当n=4, 最后两个元素取:3 5 得011^101=110=4; 4%4=0

        当n=6,最后两个元素取:5 7 得101^111=010=2; 6%2=0

        当n=8,最后两个元素取:7 9 得0111^1001=1110=12; 8%12!=0

        此番探索虽然不能证明对于n为偶数时:让最后两个元素直接取n-1,n+1,前面n-2(偶数)个元素取n-2就是答案,

        但是能够证明奇数和奇数相异或,结果必为偶数。

        那么我们只需要让前n-2个元素为0(0^0=0),最后两个元素为1,3就能处理n为偶数的情况

#include <ios>
#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        if (n%2!=0) { // n为奇数
            for (int i = 0; i < n-1; i++) {
                cout << n-1 << " ";
            }// 前n-1项全输出n-1
            cout << n << '\n';
        }
        else { // n为偶数
            for (int i = 0; i < n-2; i++) {
                cout << 0 << " ";
            }
            cout << 1 << " " << 3 << '\n';
        }
    }
}