题目大意
题目描述
对于一个长度为 n 的未知序列 a,定义其 AND-数组 f(a) 如下:
f(a)k=∑1≤i1<i2<⋯<ik≤nai1&ai2&⋯&aik
其中 1≤k≤n,& 表示按位与操作。换句话说,f(a)k 是序列 a 中所有长度为 k 的子序列的按位与结果之和。
现在给定一个长度为 n 的序列 b,满足对于所有的 1≤i≤n,都有 bi≡f(a)i(mod109+7)。
请根据给定的序列 b,构造并输出任意一个满足条件的序列 a。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例包含两行:
第一行包含一个整数 n(1≤n≤105),表示序列 a 和 b 的长度。
第二行包含 n 个整数 b1,b2,…,bn(0≤bi<109+7),表示序列 b。
保证存在长度为 n 且满足 0≤ai<229 的序列 a 使得条件成立。
保证所有测试用例中 n 的总和不超过 105。
输出格式
对于每个测试用例,输出 n 个整数 a1,a2,…,an(0≤ai<229),表示重构出的序列 a。如果有多个满足条件的序列,输出任意一个即可。
样例输入
1 2 3 4 5 6 7
| 3 3 0 0 0 5 22 24 10 1 0 10 130 585 1560 2730 3276 2730 1560 585 130 13
|
样例输出
1 2 3
| 0 0 0 5 3 6 1 7 13 13 13 13 13 13 13 13 13 13
|
样例解释
在第二个样例中,若构造的序列 a=[5,3,6,1,7],其 f(a)4 的值为:
(a1&a2&a3&a4)+(a1&a2&a3&a5)+(a1&a2&a4&a5)+(a1&a3&a4&a5)+(a2&a3&a4&a5)=0+0+1+0+0=1。
且 f(a)1=a1+a2+a3+a4+a5=22。可以证明对于所有 1≤i≤5 均有 f(a)i=bi,因此 a=[5,3,6,1,7] 是一个合法的解。
思路讲解
AC代码
心路历程(WA,TLE,MLE……)