luogu#P16409. [Algo Beat Contest 004 E] Elusive Prime
[Algo Beat Contest 004 E] Elusive Prime
背景
题目描述
这是一道交互题。
你需要猜测一个隐藏的素数 。每次你可以询问一个整数 ,系统将返回勒让德符号 的值,定义如下:
- 如果 ,返回 ;
- 否则,如果存在整数 使得 ,返回 ;
- 否则,返回 。
勒让德符号是数论中的基本工具,它满足欧拉准则:
$$\left(\frac{a}{p}\right) \equiv a^{\frac{p-1}{2}} \pmod{p}$$交互方式
你的程序需要通过标准输入输出与评测系统交互。首先,程序应开始询问,每次询问格式为:
? a
其中 是一个整数,满足 。每次询问后,评测系统会返回一个整数(、 或 ),你的程序应从标准输入读取该返回值。
当你确定 后,应输出答案,格式为:
! p
其中 是你猜测的素数。输出答案后,你的程序应立即结束。
你最多可以进行 不超过 次询问。如果询问次数超过限制,或者答案错误,或者格式不符合要求,评测系统将判定为错误答案。
注意:每次输出后必须刷新缓冲区,例如 C++ 中使用 cout << endl 或 fflush(stdout),Python 中使用 print(..., flush=True)。
你可以忽略交互库的运行时间。
1
-1
0
1
? 2
? 3
? 7
? 1
! 7
提示
【样例解释 #1】
样例中隐藏的素数为 。解释:
- 询问 ,返回 ,因为 。
- 询问 ,返回 ,因为 不是模 的二次剩余。
- 询问 ,返回 ,因为 被 整除。
- 询问 ,返回 ,因为 总是二次剩余。
- 最后输出答案 。
【数据范围】
- , 为素数。
