题目描述
对于多项式乘法,,我们可以利用快速傅里叶变换(Fast Fourier Transform)在O(nlogn)的时间复杂度内快速解决。
现在神犇ccz提出了一种新的多项式运算⨂。
F(x)=∑i=0n−1fixi
G(x)=∑i=0n−1gixi
H(x)=∑i=0n−1hixi
$h_{m} = \bigotimes_{i=0}^{m}f_{i} \bigotimes g_{m-i}$
其中⨂表示异或运算,即C或C++中的^运算,并相应的提出了一种快速异或变换(Fast Xor Transform)来快速进行这种新的运算。
下面告诉你两个多项式F(x),G(x),请你实现快速异或变换并输出H(x)。
输入格式
第一行是一个整数n。
接下来一行n个整数,第i个表示fi−1。
接下来一行n个整数,第i个表示gi−1。
输出格式
一行n个整数,第i个表示hi−1。
样例
ex_fxt1.in
5
1 9 2 6 8
1 7 105 110 102
ex_fxt1.ans
0 14 101 13 99
样例解释
异或运算(C/C++的^运算)规则如下:
设A,B为两个32位无符号整数,A,B的二进制表示从低位到高位分别为a1…a32,b1…b32,设A⨂B=C,C二进制表示从低位到高位分别为c1…c32,则ci=(ai!=bi),即若A,B的第i不同,则C的第i位为1,否则为0。
例如:
9的二进制表示为
00000000000000000000000000001001
7的二进制表示为
00000000000000000000000000000111
9⨂7的二进制表示为
00000000000000000000000000001110
即14。
该样例中,h0=f0⨂g0=0,$h_{1}=(f_{0} \bigotimes g_{1}) \bigotimes (f_{1} \bigotimes g_{0})=14$,$h_{2}=(f_{0} \bigotimes g_{2}) \bigotimes (f_{1} \bigotimes g_{1}) \bigotimes (f_{2} \bigotimes g_{0})=101$,余下的同理。
数据范围
对于60%的数据,n≤1000
对于100%的数据,1≤n≤100000,0≤ai,bi≤109