Logo Universal Online Judge

UOJ

时间限制:6 s 空间限制:1024 MB

#1028. 变换

统计

[题目描述]

你学会了FWT变换,你想要将其加强。

这是一个n位的FWT变换,有序列$A_0,A_1,\cdots,A_{2^n-1}$,变换成B序列,满足$B_i=\sum_{j|i}A_j$.

现在要求你在线算出A。

具体而言,每次会给出你一个x,并告知你 $A_x$ 的值,并保证当前 $\forall i|x,A_i$都是已知的。

要求你计算$B_x$的值。

保证依次给出 $2^n$ 个x,且这些x互不相同。

为了保证在线,假设上一个 $B_x$的答案是pre(若还没输入pre为0),$告知的数A_x=告知的数\oplus pre$ .

为了减少输入量,令$L=10^4$ ,初始给出一个序列 $c_0,c_1,\cdots,c_{L-1}$ , 若这是第at个给出的x,则告知的数为 $c_{(at-1)\%L}$

为了减少输出量,输出 $\oplus_{0\leq i<2^n}B_i$ 即可。

易知,最开始的x是0。

上面的操作均在 $mod\ 2^{32}$ 的意义下进行。

[输入格式]

第一行一个数 $n$ .

第二行L个整数,表示 $c$ .

接下 $2^n$ 行,一行一个整数$x$,表示给出$x$的顺序。

[输出格式]

输出

一行一个整数,表示$\oplus_{0\leq i<2^n}B_i$ .

[样例]

见选手目录下bit/bit1.in,bit2.in和bit/bit1.out,bit2.out

[数据范围]

测试点编号 $n\leq$ 分值
1 $20$ 20
2 $22$ 35
3 $23$ 45

对于所有测试点,满足$0\leq c_i\leq10^6,0\leq x<2^n$

大样例下载