#arc078c. [arc078_c]Awkward Response

[arc078_c]Awkward Response

问题描述

这是一个交互式任务。

Snuke有一个他最喜欢的正整数NN。你最多可以问他以下类型的问题64次:“nn是你最喜欢的整数吗?”找出NN

Snuke很扭曲,当被问到“nn是你最喜欢的整数吗?”时,他会根据以下两个条件之一给出答案:“是”,否则回答“否”:

  • 既满足nleqNn \\leq N又满足str(n)leqstr(N)str(n) \\leq str(N)
  • 既满足n>Nn > N又满足str(n)>str(N)str(n) > str(N)

这里,str(x)str(x)是将xx表示为十进制数(不包含前导零)的字符串形式。例如,str(123)=str(123) =123str(2000)str(2000)=2000。字符串按字典顺序比较。例如,11111 << 123123456789 << 9

约束条件

  • 1N1091 \leq N \leq 10^9

输入输出格式

以以下格式将你的问题写入标准输出:

? nn

这里,nn必须是一个介于11101810^{18}之间的整数(包括11101810^{18})。

然后,问题的回答将以以下格式从标准输入给出:

ansans

这里,ansans要么是Y,要么是NY表示“是”;N表示“否”。

最后,以以下格式写入你的答案:

! nn

这里,必须满足n=Nn=N


评测

  • 在每次输出后,必须刷新标准输出。 否则可能会超时。
  • 回答问题后,程序必须立即终止。否则,评测机的行为是未定义的。
  • 当你的输出无效或不正确时,评测机的行为是未定义的(不一定返回WA)。

示例

下面是当N=123N=123的情况下的一个示例通信:

输入

输出

? 1

Y

? 32

N

? 1010

N

? 999

Y

! 123

  • 因为11231 \leq 123str(1)str(123)str(1) \leq str(123),第一次回答是“是”。
  • 因为3212332 \leq 123str(32)>str(123)str(32) > str(123),第二次回答是“否”。
  • 因为1010>1231010 > 123str(1010)str(123)str(1010) \leq str(123),第三次回答是“否”。
  • 因为999123999 \geq 123str(999)>str(123)str(999) > str(123),第四次回答是“是”。
  • 程序在四次问题中成功找到N=123N=123,因此通过了这个样例。