CF1155E Guess the Root

题目描述

评委选定了一个多项式 $f(x) = a_0 + a_1 \cdot x + a_2 \cdot x^2 + \dots + a_k \cdot x^k$,其中 $k \leq 10$,所有 $a_i$ 都是整数,且 $0 \leq a_i < 10^6 + 3$。保证至少存在一个 $i$ 使得 $a_i > 0$。 现在,评委希望你找到一个整数 $x_0$,使得 $f(x_0) \equiv 0 \pmod{10^6 + 3}$,或者报告不存在这样的 $x_0$。 你最多可以询问 $50$ 次:每次你可以询问一个值 $x_q$,评委会告诉你 $f(x_q) \bmod (10^6 + 3)$ 的值。 注意,输出答案不计入查询次数。

输入格式

无输入。

输出格式

每次询问,请输出 `? x_q`,其中 $0 \leq x_q < 10^6 + 3$。评委会返回一个整数 $f(x_q) \bmod (10^6 + 3)$。如果你收到 $-1$(因为你输出了非法查询),请立即退出以避免获得其他判决。 每次输出查询后,别忘了输出换行并刷新输出缓冲区。否则,你会因为“Idleness limit exceeded”而被判失败。具体做法如下: - C++:使用 fflush(stdout) 或 cout.flush(); - Java:使用 System.out.flush(); - Pascal:使用 flush(output); - Python:使用 stdout.flush(); - 其它语言请参考相关文档。 当你准备好输出答案时,输出 `! x_0`,其中 $x_0$ 是你找到的答案,或者 $-1$ 表示不存在这样的 $x_0$。 每个测试用例最多允许你询问 $50$ 次。 Hack 格式 进行 Hack 时,输入格式如下: 仅一行,包含 $11$ 个整数 $a_0, a_1, \dots, a_{10}$($0 \leq a_i < 10^6 + 3$,$\max\limits_{0 \leq i \leq 10}{a_i} > 0$),表示多项式的各项系数。

说明/提示

第一个样例中的多项式为 $1000002 + x^2$。 第二个样例中的多项式为 $1 + x^2$。 由 ChatGPT 4.1 翻译