#L6137. 「2017 山东三轮集训 Day4」Mid

    ID: 6095 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>数据结构平衡树动态中位数对顶堆大数取模异或运算生成器卡常数优化

「2017 山东三轮集训 Day4」Mid

题目描述

JOHNKRAM 在冬令营的时候被 wys 的卡常题坑了。他表示非常不爽,于是决定也出一道卡常题来祸害人。

有一个多重集,初始时为空。JOHNKRAM 进行了 nn 次操作,每次操作往多重集内插入一个整数。第 i(1in)i(1 \leq i \leq n) 次操作完之后他会问你这个多重集内第

n+12\frac{n + 1}{2}

小的数是多少。为了防止你的工作量过大,你只需要把每次询问的答案异或起来得到的值告诉他即可。


输入格式

第一行两个整数 nna1a_1,指操作的次数和第一次操作插入的数。

接下来插入的数按如下方法生成:

$$a_i = (1714636915 \times a_{i - 1} + 1681692777) \times (846930886 \times \text{ans}_{i - 1} + 1804289383) \bmod 1000000007 $$

其中 ansi1\text{ans}_{i - 1} 指第 i1i - 1 次询问的答案。


输出格式

输出一个整数,表示所有 ansi(1<i<n)\text{ans}_i (1 < i < n) 异或得到的值。

(注:根据样例和题面描述,应该是所有 ansi\text{ans}_i 异或,包括 ans1\text{ans}_1,但输出描述中写的是 1<i<n1 < i < n,实际代码通常处理所有答案。)


样例

输入

10 1

输出

943960841

数据范围与提示

  • 对于 30%30\% 的数据,n3×193n \leq 3 \times 19 ^ 3
  • 对于 50%50\% 的数据,n1×106n \leq 1 \times 10 ^ 6
  • 对于 100%100\% 的数据,1n3×1071 \leq n \leq 3 \times 10 ^ 71a1<10000000071 \leq a_1 < 1000000007