logo AlgoBeat OnlineJudge
登录 注册

#215855. [Algo Beat Contest 004 E] Elusive Prime

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

289caf553d8724a64acbc801aefdb6c8.png


这是一道交互题。

你需要猜测一个隐藏的素数 。每次你可以询问一个整数 ,系统将返回勒让德符号 的值,定义如下:

  • 如果 ,返回
  • 否则,如果存在整数 使得 ,返回
  • 否则,返回

勒让德符号是数论中的基本工具,它满足欧拉准则:

交互方式

你的程序需要通过标准输入输出与评测系统交互。首先,程序应开始询问,每次询问格式为:

? a

其中 是一个整数,满足 。每次询问后,评测系统会返回一个整数(),你的程序应从标准输入读取该返回值。

当你确定 后,应输出答案,格式为:

! p

其中 是你猜测的素数。输出答案后,你的程序应立即结束。

你最多可以进行 不超过 次询问。如果询问次数超过限制,或者答案错误,或者格式不符合要求,评测系统将判定为错误答案。

注意:每次输出后必须刷新缓冲区,例如 C++ 中使用 cout << endlfflush(stdout),Python 中使用 print(..., flush=True)

你可以忽略交互库的运行时间。

样例

样例输入 1


1

-1

0

1

样例输出 1

? 2

? 3

? 7

? 1

! 7

数据范围与提示

【样例解释 #1】

样例中隐藏的素数为 。解释:

  • 询问 ,返回 ,因为
  • 询问 ,返回 ,因为 不是模 的二次剩余。
  • 询问 ,返回 ,因为 整除。
  • 询问 ,返回 ,因为 总是二次剩余。
  • 最后输出答案

【数据范围】

  • 为素数。