#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
样例说明:
评级为 的鳗鱼一共 只。
第 $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
样例说明:
是所有整数的倍数。
样例 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$。
相关
在下列比赛中: