#P8450. [LSOT-1] 记忆崩塌

    ID: 7484 远端评测题 5000ms 128MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>原根数论交互题Special JudgeO2优化

[LSOT-1] 记忆崩塌

题目背景

“铃铃铃”,上课铃打响。一阵眩晕,小 H 突然倒在地上。只是隐约间,感受到周围有人赶过来。

“这是哪里?我不是在上课吗?”小 H 望向周围。

“欢迎来到 OI 世界。我负责带你熟悉 OI 世界。”一个奇怪的人走到这里来。

“OI 世界?”

“对。这里没有文化课,你可以在这里尽情学习 OI。”那人解释道。

紧接着,那人将小 H 带到了一个自称是心理学家的人面前。

“你在干什么?”小 H 望着那个心理学家。他正准备把一个奇怪的东西戴到小 H 头上。

“这个可以帮你恢复你在 whk 世界的记忆。”心理学家淡淡地说。

仪器戴到头上后,小 H 大喊:“我什么都想起来了!”

然而,真的什么都想起来了吗……

从那个人带着小H前往OI世界观光开始,这一切,全都乱了……

题目描述

这是一道交互题。

小 H 失忆了。

现在,小 H 过去的记忆化成了 nn 个记忆碎片。医生拥有 nn 种长度的取样条(长度为 1n1\dots n)。记忆碎片会与长度为 ii 的取样条发生大小为 gcd(n,i)\gcd(n,i) 的情感共鸣。

医生有一个机器,可以测出长度为 ii 的取样条与小 H 产生的情感共鸣大小。现在你可以用这个机器测量一定的次数,医生希望你能告诉他若用完 nn 种长度的取样条小 H 总共会发生多大的情感共鸣。

交互格式

你可以用以下格式来询问医生你想知道的东西:

TheSame? m:下接 mm 行,每行两个数 pi,kip_i,k_i,医生会告诉你数小 H 的记忆碎片数量是否与 i=1mpiki\displaystyle\prod_{i=1}^mp_i^{k_i} 相等。Yes 代表相同或 No 代表不同。

GetGCD. m:下接 mm 行,每行两个数 p,kp,k ,医生会告诉你i=1mpiki\displaystyle\prod_{i=1}^mp_i^{k_i} 与小 H 的记忆碎片产生的情感共鸣大小。

所有询问的 pip_i 为素数,kik_i 为正整数,不符合上述限制的交互不保证交互库会做出预期行为。


你可以用以下格式来告诉医生你知道的东西:

IFoundTheAnswer! m:以此来告诉评测器我已经知道了小 H 总共产生的情感共鸣大小为 mm,并评判是否正确。


你一共可以与医生交互 10501050 次。交互库的所有输出与你输出的答案均应对 998244353998244353 取模。


你需要从标准输出中输出,代表你询问的内容。

每一次询问后都应当清空缓冲区,不然你会无缘无故 TLE。

你可以使用如下语句来清空缓冲区:

  • 对于 C/C++:fflush(stdout)
  • 对于 C++:std::cout << std::flush
  • 对于 Java:System.out.flush()
  • 对于 Python:stdout.flush()
  • 对于 Pascal:flush(output)
  • 对于其他语言,请自行查阅对应语言的帮助文档。

特别的,对于 C++ 语言,在输出换行时如果你使用 std::endl 而不是 '\n',也可以自动刷新缓冲区。

然后你需要从标准输入中输入,代表评测机返回的结果。

输入格式

见「交互格式」。

输出格式

见「交互格式」。

1
No
2
Yes
GetGCD. 0
TheSame?  0
GetGCD. 1
2 1
TheSame? 1
2 1
IFoundTheAnswer! 3

提示

【数据范围】

「本题采用捆绑测试」

  • Subtask 1(10 pts):1 n500\texttt{Subtask 1(10 pts):}1 \le\ n\le 500
  • Subtask 2(25 pts):1 n106\texttt{Subtask 2(25 pts):}1 \le\ n\le 10^6
  • Subtask 3(25 pts):\texttt{Subtask 3(25 pts):}保证 nn 的唯一分解形式仅有前 100100 个质数;
  • Subtask 4(40 pts):\texttt{Subtask 4(40 pts):}无特殊限制。

对于 100%100\% 的数据,满足 nn 的唯一分解形式质数数量不超过 10001000,且质因子最大不超过 79197919(注:79197919 为第 10001000 个质数),且质数的次数不超过 1000010000

【其他提示】

因为交互库的效率较低,所以附件中给出交互库的代码。如果你想利用下面的交互库代码进行调试,你可以在官方的 SPJ 说明 中下载 testlib.h 头文件后将两个程序的输出输入到另一个程序中。当然,你也可以模拟交互库的计算来手动输入到你的程序中。