luogu#P10699. [SNCPC2024] 猜质数 I
[SNCPC2024] 猜质数 I
题目描述
这是一道交互题。
MCPlayer542 手上有一个神秘的奇质数 ,但他并不想让你知道这个数是多少。
他打算用一个函数 来加密他的数,其值为 在十进制下的各位数字之和,例如 ,,。
然而考虑到你太聪明,他想了想,决定把加密函数改成:
即连续应用 次 ,并把手上的 换成了 。
现在他准备给你 个整数 ,并希望你能告诉他
$$q^{a_1}\bmod (m\cdot a_1),\ q^{a_2}\bmod (m\cdot a_2),\ \ldots,\ q^{a_n}\bmod (m\cdot a_n) $$分别是多少。他觉得你肯定猜不到,所以决定让你自己选择 和 。你能完成这个任务吗?
注意: 的范围有特殊限制。
输入格式
输入包含多组测试数据。数据的第一行包含一个整数 (),表示数据组数。每组数据的交互流程在下文中描述。
在每组数据中,输入的第一行包含两个整数 和 (),用单个空格分隔,含义见题目描述。
接下来每次交互,输出一行一个整数 ( 互不相同),表示要询问的 的幂次。
给出一个询问后,你应该读入一个整数,即 。
你需要在进行完 轮交互之后输出一行一个整数 (),再输出一行 个数,即 $q^{a_1}\bmod (m\cdot a_1), \ q^{a_2}\bmod (m\cdot a_2), \ \ldots, \ q^{a_n}\bmod (m\cdot a_n)$,用单个空格分隔,表示答案。
你必须进行恰好 轮交互,随后输出答案并结束程序,否则你可能得到无法预测的结果。
注意在你的程序每轮输出结束时(即,每一次交互输出 时和最后输出 与答案时)需要输出回车并刷新输出缓冲区,否则你将会得到 。
- C 的 ;
- C++ 的 ;
- Java 的 ;
- Python 的 ;
来刷新输出缓冲区。
保证在每组数据中的奇质数 () 都是在交互前确定的,即不会随着你的输入而变化。
如果你最后输出的答案正确,你会得到 ;
如果你输出的 或 不符合题目范围要求,或最后输出的答案不正确,你会得到 。
此外,其他的评测结果仍会在评测过程中根据通常情况返回。
2
3 1
3
9
9
3 2
4
4
4
1
2
3
100
3 9 27
1
7
49
49
0 0 0
提示
在第一组数据中,MCPlayer542 手上的奇质数 ,因此有 。
我们选择数组 ,依次得到 。
随后我们猜到 ,选择 ,因此输出 $3^1\bmod (100\times 1)=3, \ 3^2\bmod (100\times 2)=9, \ 3^3\bmod (100\times 3)=27$。
在第二组数据中,MCPlayer542 手上的奇质数 ,因此有 。
我们选择数组 ,依次得到 。
随后我们敏锐地发现 ,选择 ,因此输出 $49^1\bmod (49\times 1)=0, \ 49^7\bmod (49\times 7)=0, \ 49^{49}\bmod (49\times 49)=0$。
注:第二组数据中的“敏锐地发现”仅作为交互流程的示意,并不保证上述交互可以确定 。