問題一覧 > 通常問題

No.2357 Guess the Function

レベル : / 実行時間制限 : 1ケース 1.000秒 / メモリ制限 : 512 MB / リアクティブ問題 (詳しくはこちら
タグ : / 解いたユーザー数 100
作問者 : 遭難者 / テスター : 👑 p-adic 👑 ygussany
19 ProblemId : 9529 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-06-23 23:37:46

問題文

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

sounansya 君は 0A<B1000\le A < B\le 100 を満たす整数 A,BA,B を持っています。

あなたは以下の質問を 22 回まで行うことができます。

  • 11 以上 100100 以下の整数 xx を選ぶ。そして、 x+Ax+ABB で割った時の余りを聞く。
  • sounansya 君が持っている整数 A,BA,B を当ててください。

    制約

  • 0A<B1000\le A < B\le 100
  • A,BA,B の値は各テストケース毎に固定である。つまり、質問クエリに応じて A,BA,B の値が変わることはない。
  • 入出力

    この問題はインタラクティブな問題(あなたの作成したプログラムとジャッジプログラムが入出力を介して対話を行う形式の問題)です。

    整数 A,BA,B を当てることができるまで質問を繰り返してください。

    質問は、以下の形式で標準出力に出力してください。
    ?? xx
    これに対する応答は、次の形式で標準入力から与えられます。
    yy
    ここで、 yyx+Ax+ABB で割った時の余りです。

    整数 A,BA,B が分かったら、以下の形式で標準出力に出力してください。
    !! AA BB

    注意点

  • 出力を行うたびに、末尾に改行を入れて標準出力を flush してください。そうしなかった場合、ジャッジ結果が TLEWA となる可能性があります。
  • 不正な出力を行った場合のジャッジ結果は不定です。余分な空白や改行を出力することも不正な出力にあたるので、注意してください。
  • 整数 A,BA,B を解答した後はすぐにプログラムを終了させてください。終了しなければジャッジの結果は不定です。
  • 解答をするクエリは質問回数に含まれません。
  • サンプル

    以下は A=1A=1B=2B=2 として対話が始まった場合の対話の一例です。

    入力 出力 説明
    ? 2 2+A2+ABB で割った時の余りを聞きます。
    1 2+12+122 で割った時の余りは 11 なので、 11 が返されます。
    ? 3 3+A3+ABB で割った時の余りを聞きます。
    0 3+13+122 で割った時の余りは 00 なので、 00 が返されます。
    ! 1 2 答えは A=1,B=2A=1,B=2 だと分かったので、これを出力します。

    提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。