说明
__stdcall 给了你 n 个点,第 i 个点有权值 xi,对于两个点 u 和 v,如果 xuxorxv 的结果在二进制表示下有奇数个 1,那么在 u 和 v 之间连接一个 Edge,现在 __stdcall 想让你求出一共有多少个 Edge。
如果你没能成功完成任务,那么 __stdcall 会让你痛苦一下,你这个测试点就没分了。
输入格式
一行六个整数,n,a,b,c,d,x0。
n 是点的个数,每个点的权值需要用如下的方式生成。
你需要使用 a,b,c,d 和 x0 生成一个数组 x,生成方式是这样的。
xi=(axi−12+bxi−1+c)modd
xi 就是第 i 个点的权值,点的标号是 1 到 n。
输出格式
输出一个整数,表示一共有多少个 Edge。
8 98 24 20 100 44
12
1000 952537 601907 686180 1000000 673601
249711
提示
我们用 v 表示权值中的最大值。
对于前 20% 的数据,n≤10。
对于前 40% 的数据,n≤100。
对于前 60% 的数据,n≤1000。
对于前 80% 的数据,n≤1×106。
对于前 90% 的数据,v≤1×106。
对于 100% 的数据,n≤1×107,v≤1×109。
保证 a,b,c,d,x0 都是 int 内的非负整数。