No.624 Santa Claus and The Last Dungeon
レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / リアクティブ問題 (詳しくはこちら)
タグ : / 解いたユーザー数 9
作問者 :
e869120
/ テスター :
紙ぺーぱー
タグ : / 解いたユーザー数 9
作問者 :


問題文最終更新日: 2018-08-23 23:20:51
連絡
重要! Advent Calendar Contest も あと 2 日!
最後の 2 日間、ぜひお楽しみください!
重要な情報
この問題はリアクティブ問題です。
ストーリー展開
Yukicoder は、Santa Claus からプレゼントを貰おうとした。
しかし、Santa Claus はいたずら者だったので、以下のような条件をもとにプレゼントを渡すことにした。
- あそこにダンジョンがある。その最後の部屋まで追い詰め、この部屋であなたが勝利したら、プレゼントを渡す。

順調に戦いを行った結果、最後の部屋まで Santa Claus を追い詰めることが出来た。しかし・・・
yukicoder 「なんだこれは、、、鍵が、鍵が、100 個もあるのではないか!?」

これが開けられれば勝ちなのに、ここで諦めるわけにはいかない。
問題
最後のダンジョンを開けるためには、- 全ての暗号の答えは、
以上 以下の 桁の 進整数である。 - 全ての暗号の答えは違う。つまり、
個目の暗号を とした時、 のとき絶対に を満たす。
しかし、鍵の暗号をヒントなしで開けることは非常に難しいので、Santa Claus は、下のようなヒントを出すことにしました。
- Santa Claus は、yukicoder が暗号を全部入力し終え、決定ボタンを押すときに毎回ヒントを出す。
- 内容は、"0 個の桁が合っている場所の個数"・"1 個の桁が合っている場所の個数"・"2 個 (全部) の桁が合っている場所の個数" を教えてくれるというものである。
- 但し、一部の暗号の桁を入れずに決定を押すこともでき、入れなかった桁は、「合っていない桁」として判定される。
ただし、「桁が合っている個数」は以下のように定義されます。
, のとき( = 暗号の答え、 = 入力した暗号、とする) , , のうち成り立っている個数を「桁が合っている個数」とする。- 例えば、
と は 1 個の桁が合っている。 - また、
と は 0 個の桁が合っている。(下の桁は入力されていないため)
yukicoder は決定ボタンを
あなたは優秀なプログラミング能力を持つ、yukicoder と協力して戦う戦士です。できるだけ最適に暗号を入れ、質問し、最後に正しい暗号を入力して扉を開けましょう。
ただし、暗号を、一部の場所の一部の桁に対して、入れないという選択をすることはできます。その桁については '?' として出力してください。(入力例参照)
入力
まず、最初に、以下の値が入力されます。また、各質問に対しての返答(入力)は、以下のようになります。
それぞれ、左から順に、
ただし、入れなかった桁(
出力
質問するときは、以下のように出力してください。...
なお、正しい数を入れた場合(全ての位置が合っている場合)、正解となり、それ以降質問する必要はありません。
また、
制約
- ケースは全部で
個ある。 個 のケースにおいて、 を満たす。- 別の
個 のケースにおいて、 を満たす。 - 別の
個 のケースにおいて、 を満たす。 - 別の
個 のケースにおいて、 を満たす。 - 別の
個のケースにおいて、 を満たす。 - 全てのケースにおいて、暗号の答えはランダムに作られたものである。
注意
質問形式を間違えた場合、あるいは質問回数の上限をオーバーした場合の挙動は定義されていません。サンプル
サンプル1
入出力の例
例えば、鍵プログラムからの入力 | プログラムの出力 |
---|---|
5500 | |
?0 ?1 ?2 ?3 ?4 ?5 ..., ?7 ?8 ?9 | |
0 100 0 | |
99 98 97 96 95 94 ... 02 01 00 | |
100 0 0 | |
00 00 00 00 00 00 ... 00 00 00 | |
81 18 1 | |
01 02 03 04 05 06 ... 98 99 00 | |
10 90 0 | |
10 11 12 13 14 15 ... 07 08 09 | |
0 100 0 | |
00 01 02 03 04 05 ... 97 98 99 | |
0 0 100 |
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。