分析核心条件
问题的核心在于条件“i⊕ai 的结果为奇数”。一个整数是奇数,当且仅当它的二进制表示的最低位为 1。
异或运算与奇偶性
我们来分析异或运算 ⊕ 对最低位的影响。两个数的异或结果的最低位,是这两个数最低位的异或结果。
给定一个正整数 n ,请你构造一个长度为 n 的排列 {a1,a2,...,an},满足:
长度为 n 的排列:由 1,2,…,n 这 n 个整数按任意顺序组成的数组(每个整数恰好出现一次)。例如, {2,3,1,5,4} 是一个长度为 5 的排列;而 {1,2,2} 和 {1,3,4} 都不是排列。
这里的 ⊕ 表示按位异或运算;奇数是指除以 2 余数为 1 的整数。
每个测试文件均包含多组测试数据。
第一行输入一个整数 T(1≦T≦2×105) 表示测试数据组数。此后 T 行:
每行输入一个整数 n(1≦n≦2×105) 。
除此之外,保证单个测试文件中所有 n 的和不超过 2×105 。
对每组测试数据,新起一行输出:
若存在满足条件的排列,输出任意一个满足条件的排列,共 n 个整数,数与数之间用一个空格隔开;
若不存在满足条件的排列,输出单个整数 −1 。
如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
输入
2
1
2
输出
-1
2 1
说明
对于 n=1 ,无论 a1 取 1 ,均有 1⊕1=0 为偶数,因此无解,输出 −1 。
对于 n=2 ,取排列 {2,1} :1⊕2=3、2⊕1=3,均为奇数,合法。