atcoder#ARC078C. [ARC078E] Awkward Response

[ARC078E] Awkward Response

配点 : 800800

問題文

これはインタラクティブな問題です。

すぬけくんはお気に入りの正の整数 NN を持っています。あなたは 「nn はお気に入りの正の整数か?」と最大 6464 回すぬけくんに質問することができます。 NN を特定してください。

すぬけくんはひねくれ者なので「nn はお気に入りの正の整数か?」と質問されたとき、nn が以下の 22 つの条件のどちらかを満たすとき Yes と、それ以外のとき No と答えます。

  • nNn \leq N かつ str(n)str(N)str(n) \leq str(N)を満たす
  • n>Nn > N かつ str(n)>str(N)str(n) > str(N) を満たす

ここで、str(x)str(x) は正の整数 xx を十進表記(先頭に 00 をつけない)の文字列として表したものです。例えば str(123)=str(123) = 123str(2000)str(2000) = 2000 です。 なお、この問題において文字列同士は辞書順で比較されます。例えば 11111 << 123123456789 << 9 が成立します。

制約

  • 1N1091 \leq N \leq 10^{9}

入出力

各質問は、標準出力に以下の形式で出力せよ:

? n

ここで nn11 以上 101810^{18} 以下の整数でなければならない。

次に、質問の答えが標準入力から以下の形式で与えられる:

ans

ここで ansansY または N である.Y ならば、質問の答えが Yes であることを、N ならば No であることを示す。

最後に、答えを以下の形式で出力せよ:

! n

ここで n=Nn=N でなくてはならない。

ジャッジ

  • **出力のあと、標準出力を flush せよ。**従わない場合 TLE の可能性がある。
  • 答えを出力した後、プログラムをすぐに終了せよ。従わない場合のジャッジの挙動は定義されていない。
  • 出力の答えが間違っている場合の挙動は定義されていない(WA とは限らない)。

入出力例

これは N=123N=123 のときの入出力例です。

Input Output
? 1
Y
? 32
N
? 1010
N
? 999
Y
! 123
  • 11231 \leq 123 かつ str(1)str(123)str(1) \leq str(123) なので答えは Yes です
  • 3212332 \leq 123 ですが、str(32)>str(123)str(32) > str(123) なので答えは No です
  • 1010>1231010 > 123 ですが、str(1010)str(123)str(1010) \leq str(123) なので答えは No です
  • 999123999 \geq 123 かつ str(999)>str(123)str(999) > str(123) なので答えは Yes です
  • NN123123 であると 44 回の質問で回答できたため正解となります