P4932 浏览器

题目背景

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

题目描述

\_\_stdcall 给了你 $n$ 个点,第 $i$ 个点有权值 $x[i]$,对于两个点 $u$ 和 $v$,如果 $x_u \operatorname{xor}x_v$ 的结果在二进制表示下有奇数个 $1$,那么在 $u$ 和 $v$ 之间连接一个 Edge,现在 \_\_stdcall 想让你求出一共有多少个 Edge。 如果你没能成功完成任务,那么 \_\_stdcall 会让你痛苦一下,你这个测试点就没分了。

输入格式

一行六个整数,$n$,$a$,$b$,$c$,$d$,$x_0$。 $n$ 是点的个数,每个点的权值需要用如下的方式生成。 你需要使用 $a$,$b$,$c$,$d$ 和 $x_0$ 生成一个数组x,生成方式是这样的。 $$x_i = (ax_{i-1}^2 + bx_{i-1} + c) \bmod d$$ $x_i$ 就是第 $i$ 个点的权值,点的标号是 $1$ 到 $n$。

输出格式

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

说明/提示

我们用 $v$ 表示权值中的最大值。 对于前 $20\%$ 的数据,$n \le 10$。 对于前 $40\%$ 的数据,$n \le 100$。 对于前 $60\%$ 的数据,$n \le 1000$。 对于前 $80\%$ 的数据,$n \le 1 \times 10^6$。 对于前 $90\%$ 的数据,$v \le 1 \times 10^6$。 对于 $100\%$ 的数据,$n \le 1 \times 10^7,v \le 1 \times 10^9$。 保证 $a$,$b$,$c$,$d$,$x_0$ 都是 `int` 内的非负整数。