inverse
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 193 Accepted Submission(s): 97
Problem Description
Mike has got a huge array
b, and he is told that the array is encrypted.
The array is encrypted as follows.
Let ai(0≤i<n) be the i-th number of this original array.
Let bi(0≤i<n) be the i-th number of this encrypted array.
Let n be a power of 2, which means n=2k.
The bi is calculated as following.
f(x) means, if the number of 1 in the binary of x is even, it will return 1, otherwise 0.
Mike want to inverse the procedure of encryption.
Please help him recover the array a with the array b.
The array is encrypted as follows.
Let ai(0≤i<n) be the i-th number of this original array.
Let bi(0≤i<n) be the i-th number of this encrypted array.
Let n be a power of 2, which means n=2k.
The bi is calculated as following.
bi=∑0≤j<nf((i or j) xor i)aj
f(x) means, if the number of 1 in the binary of x is even, it will return 1, otherwise 0.
Mike want to inverse the procedure of encryption.
Please help him recover the array a with the array b.
Input
The first line contains an integer
T(T≤5), denoting the number of the test cases.
For each test case, the first line contains an integer k(0≤k≤20),
The next line contains n=2k integers, which are bi respectively.
It is guaranteed that, ai is an integer and 0≤ai≤109.
For each test case, the first line contains an integer k(0≤k≤20),
The next line contains n=2k integers, which are bi respectively.
It is guaranteed that, ai is an integer and 0≤ai≤109.
Output
For each test case, output ''Case #t:'' to represent this is the t-th case. And then output the array
a.
Sample Input
2 0 233 2 5 3 4 10
Sample Output
Case #1: 233 Case #2: 1 2 3 4
Source
Recommend