跳转至

红石钟

  • 参考时间限制:3.0 秒(参考环境:评测环境与性能;仅供预估)
  • 实际时间限制:标准程序在目标评测环境中处理最慢正式测试文件的基准时间的 2 倍,按 0.5 秒的倍数向上取整;若平台仅支持更粗的粒度,再向上取整到平台可设置值。
  • 内存限制:512 MB

背景故事

村长想制作能够设置长时间闹铃的红石钟。他把两个时钟同时启动,只有它们同时结束各自的一个周期时,闹铃才会响起。现在要测试一系列动态生成的周期组合,请汇总每组组合第一次响铃的时间。

形式化问题描述

给定正整数 \(n,a\) ,共进行 \(2n\) 次询问。周期为 \(s,t\) 的两个时钟都在时刻 \(0\) 启动,询问答案为它们第一次同时结束周期的正时刻;时刻 \(0\) 不计。

令 \(U=10000000\) .对 \(i=1,\ldots,n\) ,严格按以下顺序执行:

  1. 第 \(2i-1\) 次询问使用周期 \(i,a\) ,记录答案。
  2. 更新 \(a\gets(a+10007)\bmod U+1\) .
  3. 第 \(2i\) 次询问使用周期 \(i,a\) ,记录答案。
  4. 更新 \(a\gets(a^2+1)\bmod U+1\) .

分别输出所有奇数次询问答案的按位异或和,以及所有偶数次询问答案的按位异或和。

输入格式

输入一行两个整数 \(n,a\) ,其中 \(a\) 是初始值。

输出格式

输出两行:第一行是奇数次询问答案的异或和,第二行是偶数次询问答案的异或和。

样例 1

输入

5 7

输出

8312897
24761077

解释

按给定顺序生成十次询问。每次更新后的 \(a\) 会用于下一次询问。

样例 2

输入

1 1

输出

1
10009

解释

第一次询问的周期为 \(1,1\) ,答案为 \(1\) .随后 \(a\) 更新为 \(10009\) ,第二次询问答案为 \(10009\) .

数据范围与保证

  • \(1\le n\le10000000\) ,\(1\le a\le10000000\) .

数据分组

分值比例 额外条件
25% \(n\le1000000\)
75% 无额外条件