AT_arc078_c.[ARC078E] Awkward Response

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是一道交互题。

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

  • x≤nx\le n 且 str(x)≤str(n)\mathrm{str}(x)\le\mathrm{str}(n)。
  • x>nx\gt n 且 str(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 为一个 11 到 101810^{18} 之间的整数,表示你询问的数字。在这之后,你需要读入一个表示答案的字符,只可能为 Y 或 N。

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

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

输入格式

null

输出格式

null

说明/提示

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

Translated by @Grammar_hbw。

输入解题思路,AI测评打分。不知道怎么写?

首页