#XMOJ11815. 友人和恋人

友人和恋人

说明

时间限制:1 Sec 内存限制:256 MB 输入文件friend.in 输出文件friend.out

共有 $N$ 只兔子,$N$ 种鳗鱼。

对于第 $j$ 只兔子,它认为评级为 $a_j$ 的倍数的鳗鱼是朋友,评级为 $a_j \times b_j$ 的倍数的鳗鱼是恋人。

评级为 $x_i$ 的鳗鱼一共有 $z_{x_i}$ 只。

对每一只兔子,请你求出:是朋友但不是恋人的鳗鱼数量,也就是评级是 $a_j$ 的倍数,但不是 $a_j\times b_j$ 的倍数的鳗鱼总数。

补充说明:

$z_x = \sum\limits_{k:x_k=x} y_k$。

初始状态下没有发现任何鳗鱼。可以理解为:每当给出一组 $x_i,y_i$,就新发现 $y_i$ 只评级为 $x_i$ 的鳗鱼。

由于用户数量巨大,输入数据按照下面伪代码生成。

> 注意:如果直接原样实现下面伪代码,很可能超时或内存超限。

> 提示:保存 $2^{24}$ 个 $64$ 位变量会占用 128MB 内存。

z[0] = z[1] = ... = z[MOD-1] = 0
for i in [1, M]:
    x[i] = X[i]
    y[i] = Y[i]
    a[i] = A[i]
    b[i] = B[i]

for i in [M+1, N]: x[i] = (x[i-1] * mulX + addX) % MOD y[i] = (y[i-1] * mulY + addY) % MOD a[i] = (a[i-1] * mulX + addX + MOD - 1) % MOD + 1 b[i] = (b[i-1] * mulY + addY + MOD - 1) % MOD + 1

for i in [1, N]: z[x[i]] += y[i]

</p>

输出行数很长,规定输出规则:

前 $M$ 只兔子,直接输出答案;

最后一行输出所有 $N$ 只兔子答案的按位异或和。

输入格式

第一行七个整数 $M,N,mulX,addX,mulY,addY,MOD$。

第二行 $M$ 个整数 $X_1,X_2,\dots,X_M$。

第三行 $M$ 个整数 $Y_1,Y_2,\dots,Y_M$。

第四行 $M$ 个整数 $A_1,A_2,\dots,A_M$。

第五行 $M$ 个整数 $B_1,B_2,\dots,B_M$。

输出格式

一共输出 $M+1$ 行。

前 $M$ 行中,第 $j$ 行输出第 $j$ 只兔子对应的答案并换行。

第 $M+1$ 行输出全部 $N$ 只兔子答案的异或和并换行。

样例

样例 1

3 3 0 0 0 0 8
4 4 4
1 2 3
1 2 3
2 3 1

0
6
0
6

样例说明:

评级为 44 的鳗鱼一共 66 只。

第 $1$ 只兔子:所有鳗鱼既是朋友也是恋人,符合条件数量为 $0$。

第 $2$ 只兔子:所有鳗鱼都是友达以上恋人未满,数量为 $6$。

第 $3$ 只兔子:所有鳗鱼既不是朋友也不是恋人,数量为 $0$。

样例 2

2 2 1 2 3 4 8
0 1
1 0
1 2
2 1

0
0
0

样例说明:

00 是所有整数的倍数。

样例 3

1 10 1 1 1 1 32
1
2
3
4

21
13

样例 4

1 8 5 3 0 2 16
1
5
2
6

6
15

数据范围

对于 10% 的数据,$1 \le M \le N \le 10$。

对于 100% 的数据,$1 \le M \le 10^3$,$M \le N \le 10^7$。

对于 100% 的数据,$1 \le MOD \le 2^{24}$,保证 $MOD$ 是 $2$ 的整数次幂,$0 \le mulX,addX,mulY,addY \lt MOD$,$0 \le X_i,Y_i \lt MOD$,$1 \le A_j,B_j \le MOD$。