luogu#P10699. [SNCPC2024] 猜质数 I

    ID: 14636 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>2024交互题Special JudgeO2优化陕西XCPC

[SNCPC2024] 猜质数 I

题目描述

这是一道交互题。

MCPlayer542 手上有一个神秘的奇质数 pp,但他并不想让你知道这个数是多少。

他打算用一个函数 f(x)f(x) 来加密他的数,其值为 xx 在十进制下的各位数字之和,例如 f(5)=5f(5)=5f(542)=5+4+2=11f(542)=5+4+2=11f(1024)=1+0+2+4=7f(1024)=1+0+2+4=7

然而考虑到你太聪明,他想了想,决定把加密函数改成:

g(x)=f(f(f(f(f(f(f(f(f(f(x))))))))))g(x)=f(f(f(f(f(f(f(f(f(f(x))))))))))

即连续应用 1010f(x)f(x),并把手上的 pp 换成了 q=pkq=p^k

现在他准备给你 nn 个整数 g(qa1), g(qa2), , g(qan)g(q^{a_1}),\ g(q^{a_2}),\ \ldots,\ g(q^{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) $$

分别是多少。他觉得你肯定猜不到,所以决定让你自己选择 mma1, a2, , ana_1,\ a_2,\ \ldots,\ a_n。你能完成这个任务吗?

注意:mm 的范围有特殊限制。

输入格式

输入包含多组测试数据。数据的第一行包含一个整数 tt (1t5001\le t\le 500),表示数据组数。每组数据的交互流程在下文中描述。

在每组数据中,输入的第一行包含两个整数 nnkk (1n50, 1k1091\le n\le 50, \ 1\le k\le 10^9),用单个空格分隔,含义见题目描述。

接下来每次交互,输出一行一个整数 aia_i (1ai1018,ai1\le a_i\le 10^{18},a_i 互不相同),表示要询问的 qq 的幂次。

给出一个询问后,你应该读入一个整数,即 g(qai)g(q^{a_i})

你需要在进行完 nn 轮交互之后输出一行一个整数 mm (m35,1mai1018m\ge 35,1\le m\cdot a_i\le 10^{18}),再输出一行 nn 个数,即 $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)$,用单个空格分隔,表示答案。

你必须进行恰好 nn 轮交互,随后输出答案并结束程序,否则你可能得到无法预测的结果。

注意在你的程序每轮输出结束时(即,每一次交互输出 aia_i 时和最后输出 mm 与答案时)需要输出回车并刷新输出缓冲区,否则你将会得到 Idleness Limit Exceeded\text{Idleness Limit Exceeded}

  • C 的 fflush(stdout)\text{fflush(stdout)}
  • C++ 的 cout.flush()\text{cout.flush()}
  • Java 的 System.out.flush()\text{System.out.flush()}
  • Python 的 stdout.flush()\text{stdout.flush()}

来刷新输出缓冲区。

保证在每组数据中的奇质数 pp (2<p10182<p\le 10^{18}) 都是在交互前确定的,即不会随着你的输入而变化。

如果你最后输出的答案正确,你会得到 Accepted\text{Accepted}

如果你输出的 mmaia_i 不符合题目范围要求,或最后输出的答案不正确,你会得到 Wrong Answer\text{Wrong Answer}

此外,其他的评测结果仍会在评测过程中根据通常情况返回。

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 手上的奇质数 p=3p=3,因此有 q=pk=3q=p^k=3

我们选择数组 a={1, 2, 3}a=\{1,\ 2,\ 3\},依次得到 g(31)=3, g(32)=9, g(33)=9g(3^1)=3, \ g(3^2)=9, \ g(3^3)=9

随后我们猜到 p=3p=3,选择 m=100m=100,因此输出 $3^1\bmod (100\times 1)=3, \ 3^2\bmod (100\times 2)=9, \ 3^3\bmod (100\times 3)=27$。

在第二组数据中,MCPlayer542 手上的奇质数 p=7p=7,因此有 q=pk=49q=p^k=49

我们选择数组 a={1, 7, 49}a=\{1,\ 7,\ 49\},依次得到 g(491)=4, g(497)=4, g(4949)=4g(49^1)=4,\ g(49^7)=4,\ g(49^{49})=4

随后我们敏锐地发现 p=7p=7,选择 m=49m=49,因此输出 $49^1\bmod (49\times 1)=0, \ 49^7\bmod (49\times 7)=0, \ 49^{49}\bmod (49\times 49)=0$。

注:第二组数据中的“敏锐地发现”仅作为交互流程的示意,并不保证上述交互可以确定 p=7p=7