luogu#P8450. [LSOT-1] 记忆崩塌
[LSOT-1] 记忆崩塌
题目背景
“铃铃铃”,上课铃打响。一阵眩晕,小 H 突然倒在地上。只是隐约间,感受到周围有人赶过来。
“这是哪里?我不是在上课吗?”小 H 望向周围。
“欢迎来到 OI 世界。我负责带你熟悉 OI 世界。”一个奇怪的人走到这里来。
“OI 世界?”
“对。这里没有文化课,你可以在这里尽情学习 OI。”那人解释道。
紧接着,那人将小 H 带到了一个自称是心理学家的人面前。
“你在干什么?”小 H 望着那个心理学家。他正准备把一个奇怪的东西戴到小 H 头上。
“这个可以帮你恢复你在 whk 世界的记忆。”心理学家淡淡地说。
仪器戴到头上后,小 H 大喊:“我什么都想起来了!”
然而,真的什么都想起来了吗……
从那个人带着小H前往OI世界观光开始,这一切,全都乱了……
题目描述
这是一道交互题。
小 H 失忆了。
现在,小 H 过去的记忆化成了 个记忆碎片。医生拥有 种长度的取样条(长度为 )。记忆碎片会与长度为 的取样条发生大小为 的情感共鸣。
医生有一个机器,可以测出长度为 的取样条与小 H 产生的情感共鸣大小。现在你可以用这个机器测量一定的次数,医生希望你能告诉他若用完 种长度的取样条小 H 总共会发生多大的情感共鸣。
交互格式
你可以用以下格式来询问医生你想知道的东西:
TheSame? m
:下接 行,每行两个数 ,医生会告诉你数小 H 的记忆碎片数量是否与 相等。Yes
代表相同或 No
代表不同。
GetGCD. m
:下接 行,每行两个数 ,医生会告诉你 与小 H 的记忆碎片产生的情感共鸣大小。
所有询问的 为素数, 为正整数,不符合上述限制的交互不保证交互库会做出预期行为。
你可以用以下格式来告诉医生你知道的东西:
IFoundTheAnswer! m
:以此来告诉评测器我已经知道了小 H 总共产生的情感共鸣大小为 ,并评判是否正确。
你一共可以与医生交互 次。交互库的所有输出与你输出的答案均应对 取模。
你需要从标准输出中输出,代表你询问的内容。
每一次询问后都应当清空缓冲区,不然你会无缘无故 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
提示
【数据范围】
「本题采用捆绑测试」
- ;
- ;
- 保证 的唯一分解形式仅有前 个质数;
- 无特殊限制。
对于 的数据,满足 的唯一分解形式质数数量不超过 ,且质因子最大不超过 (注: 为第 个质数),且质数的次数不超过 。
【其他提示】
因为交互库的效率较低,所以附件中给出交互库的代码。如果你想利用下面的交互库代码进行调试,你可以在官方的 SPJ 说明 中下载 testlib.h
头文件后将两个程序的输出输入到另一个程序中。当然,你也可以模拟交互库的计算来手动输入到你的程序中。