#P4932. 浏览器

    ID: 5642 远端评测题 1500ms 500MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>O2优化进制位运算洛谷月赛

浏览器

背景

__stdcall 在用 Edge 玩 slay 的时候,鼠标会经常失灵,这让她十分痛苦,因此她决定也要让你们感受一下 Edge 制造的痛苦。

题目描述

__stdcall 给了你 nn 个点,第 ii 个点有权值 xix_i,对于两个点 uu 和 vv,如果 xuxor⁡xvx_u \operatorname{xor}x_v 的结果在二进制表示下有奇数个 11,那么在 uu 和 vv 之间连接一个 Edge,现在 __stdcall 想让你求出一共有多少个 Edge。

如果你没能成功完成任务,那么 __stdcall 会让你痛苦一下,你这个测试点就没分了。

输入格式

一行六个整数,nn,aa,bb,cc,dd,x0x_0。

nn 是点的个数,每个点的权值需要用如下的方式生成。

你需要使用 aa,bb,cc,dd 和 x0x_0 生成一个数组 xx,生成方式是这样的。

xi=(axi−12+bxi−1+c) mod dx_i = (ax_{i-1}^2 + bx_{i-1} + c) \bmod d

xix_i 就是第 ii 个点的权值,点的标号是 11 到 nn。

输出格式

输出一个整数,表示一共有多少个 Edge。

8 98 24 20 100 44

12

1000 952537 601907 686180 1000000 673601

249711

提示

我们用 vv 表示权值中的最大值。

对于前 20%20\% 的数据,n≤10n \le 10。

对于前 40%40\% 的数据,n≤100n \le 100。

对于前 60%60\% 的数据,n≤1000n \le 1000。

对于前 80%80\% 的数据,n≤1×106n \le 1 \times 10^6。

对于前 90%90\% 的数据,v≤1×106v \le 1 \times 10^6。

对于 100%100\% 的数据,n≤1×107,v≤1×109n \le 1 \times 10^7,v \le 1 \times 10^9。

保证 aa,bb,cc,dd,x0x_0 都是 int 内的非负整数。