「Wdoi-2」死亡之后愈发愉悦
题目背景
落樱缤纷春不待,如果错过了这次机会,可能得等到紫藤绽放的春夏之际才能赏花了。
但是两人依然无心在樱花树下席地而宴。
因为正体不明的灵体在两人面前倏现骤消的飘浮着。
后来才明白这些四处飘浮的正体不明灵体,既非普通幽灵,也不是前阵子出现的怨灵。
这些是神灵。本应超脱为神的灵体。
一般而言,神灵多半居住在神社里,其实它们是随处可见的没有固定型态的灵体。
这些神灵让她们困惑不已。
超乎常人的强烈人欲、想法、恐惧与情感,是神灵出现的原因。一般而言,神灵很少危害人类,如果没有强烈的欲望。例如祈求丰收,或是除厄避邪等,是不会产生神灵的……
小神灵指引着灵梦与魔理沙深入命莲寺的地底,与千年复苏的敌人交手。从命莲寺墓地到莲池中央的梦殿大祀庙,从彷徨的亡灵到极具传说色彩的圣德太子,从欲望加速到小小的欲望星空,一切都显得那么不可思议。
「死亡之后,才能得到更加绚烂的重生。」
题目描述
**【这是一道交互题】**
定义 $f(x)$ 表示严格大于 $x$ 的最小的完全平方数,定义 $g(x)$ 为小于等于 $x$ 的最大的完全平方数。例如,$f(1)=f(2)=g(4)=g(8)=4$。
一个正整数是“可爱”的,当且仅当 $x-g(x)<f(x)-x$,例如,$1,5,11$ 是可爱的正整数,而 $3,8,15$ 不是。
为了倾听小神灵的愿望,主角组需要向神子询问。小神灵有一个最喜欢的正整数 $a$,神子可以根据灵梦给出的 $x\quad(x\in[0,10^9])$,向小神灵询问,而小神灵只能回答她,$a+x$ 是不是可爱的正整数($\text{cute number}$)。
请通过适当的询问找出 $a$。
输入输出格式
输入格式
第一行有一个正整数 $T$,表示数据组数。每一组之间互相独立。
接下来,对于每一组数据,你将可以进行以下两种操作:
- $\verb!? x!$:询问 $a+x$ 是否是 $\text{cute number}$。要注意,$x$ 的值应当在 $[0,10^9]$ 以内。对于正确的询问,交互库会返回一个数字 $1$ 或者 $0$,表示 $a+x$ 是/不是 $\text{cute number}$。
- $\verb|! a|$:报告你发现的 $a$。如果你给出的 $a$ 正确,该组数据结束。注意:报告操作不计入询问操作的总次数。
如果你的询问次数超过了 $100$,或者 $x$ 不符合数据范围,或者你报告的 $a$ 不正确,交互库会返回一个数字 $-1$。此时你应当立即结束程序,否则可能发生不可预知的错误。
输出格式
输入输出样例
输入样例 #1
1
1
1
1
1
1
0
0
1
输出样例 #1
? 0
? 1
? 2
? 3
? 10
? 100
? 233
? 1919810
! 114514
说明
### 样例解释
样例当中的过程仅供参考。
样例当中,$a=114514$,是 $\text{cute number}$(因为 $338^2\le 114514 <339^2$,而 $114514-338^2=270<339^2-114514=407$)。
同样地,$a+0,a+1,a+2,a+3,a+10$ 均为 $\text{cute number}$。而 $a+100=114614$ 不是 $\text{cute number}$,因为 $338^2\le 114614 <339^2$,而 $114614-338^2=370\ge 339^2-114614=307$。
### 数据范围及约定
$$
\def\arraystretch{1.5}
\begin{array}{|c|c|c|c|c|}\hline
\textbf{Subtask} & \bm{a\le } & \bm{T\le} & \textbf{特殊性质} & \textbf{分值}\\\hline
1 & 100 & 100 & - & 10\\\hline
3 & 10^9 & 2\times 10^3 & - & 20\\\hline
2 & 10^{12} & 2\times 10^3 & \textbf{A} & 30\\\hline
4 & 10^{12} & 2\times 10^3 & - & 40\\\hline
\end{array}
$$
**特殊性质** $\textbf{A}$:保证 $a$ 是 $\text{cute number}$。
对于全部数据,保证 $1\le a\le 10^{12}$。你发起的询问当中,$x$ 的值应当在 $[0,10^9]$ 以内。
---
此外,你每个测试点的得分还与该测试点所有询问次数的最大值有关。具体而言,设某个测试点你询问操作一共进行了 $\text{max\_count}$ 次。
- 若 $\text{max\_count}< 64$,你将获得该测试点 $100\%$ 的分数;
- 若 $64\le \text{max\_count}< 81$,你将获得该测试点 $50\%$ 的分数;
- 若 $81\le \text{max\_count}< 100$,你将获得该测试点 $20\%$ 的分数;
- 若 $\text{max\_count}\ge 100$,你将不能获得该测试点的分数。