#ATarc078c. [ARC078E] Awkward Response

[ARC078E] Awkward Response

题目描述

这是一道交互题。

Snuke 有一个整数 n (1n109)n \ (1 \le n \le 10^9),你可以用 ? x1x10181 \le x \le 10^{18})向她提问。当 Snuke 收到提问时,她只有在满足下面两个条件之一的时候会回答 Y,其他时候都会回答 N

  • xnx\le nstr(x)str(n)\mathrm{str}(x)\le\mathrm{str}(n)
  • x>nx\gt nstr(x)>str(n)\mathrm{str}(x)\gt\mathrm{str}(n)

这里 str(n)\mathrm{str}(n) 表示 nn(无前导 0)的十进制表示字符串,字符串的比较按字典序进行。str(111111111)<str(9)\mathrm{str}(111111111) \lt \mathrm{str}(9)

交互格式

当你需要提问时,输出一行 ? x,其中 xx 为一个 11101810^{18} 之间的整数,表示你询问的数字。在这之后,你需要读入一个表示答案的字符,只可能为 YN

当你已经知道 Snuke 的数字时,输出一行 ! n,其中 nn 为你的答案。这不计入询问次数。

你需要在 6464 次询问之内得到答案。

说明/提示

  • 每一次输出后需要换行并清空缓冲区,否则你可能得到 TLE。可以使用以下方法刷新输出:
    • C++:fflush(stdout)cout.flush()
    • Java:System.out.flush()
    • Pascal:flush(output)
    • Python:stdout.flush()
    • 其他语言请参考相关文档。
  • 输出答案之后,你应该立刻结束程序,否则交互库的行为未定义。
  • 如果你的输出无效或者错误,交互库的行为未定义,它并不一定给出 WA 。

Translated by

/user/856004