在比赛过程中我自创了异或的分配律,直接把自己无语到了
首先我们要善用异或的性质
a ^ 0 = a
a ^ a = 0
若a ^ b = c 则c ^ b = a
^有结合律没有分配律
因此,对于a是偶数来说,显然a // 2, 0, 0就是一组解,我晕
若a + b是偶,说明a和b同奇偶,也就是最后一位相同,所以a ^ b最后一位是0,所以a ^ b 也是偶
若a + b是奇,说明a和b最后一位相异,所以a ^ b最后一位是1,所以a ^ b是奇数
借助上述引理,已知(a ^ b) + (b ^ c) + (c ^ a) = n
又有(a ^ b) ^ (b ^ c) = a ^ c
所以一开始的式子可以化简为x + y + (x ^ y) = n
显然n是偶数
无语
import sys
input = sys.stdin.readline
for _ in range(int(input())):
n = int(input())
if n % 2 == 1:
print(-1)
else:
print(n // 2, 0, 0)
位运算不行
数学不行