B - 数当てゲーム
Editorial
/
Time Limit: 2 sec / Memory Limit: 256 MB
ゲーム好きな結衣さんはかねてからの希望が通り、ゲーム好きな教授の研究室に配属されることになった。
そこの研究室では、1以上1000以下の整数で毎日変わる 暗証番号 で部屋がロックされている。そして、部屋に入るには、AI に質問して暗証番号を当てるゲームをする必要があった。
AI には1種類の質問ができる。AI に1以上1000以下の整数 x を与えると AI は暗証番号が x で割り切れるかどうかを返答する。暗証番号の入力はセキュリティ上1回しかできない。暗証番号の入力と AI への質問は合計で QLE 回まで行える。
最初は楽しめていた結衣さんも、いいかげん毎日ゲームをするのにうんざりしてきたので、暗証番号を当てるプログラムを書くことにした。
入出力形式
プログラムはある数字が暗証番号を割り切れるかどうかをAIに聞くことができる。 例えば C/C++で10が暗証番号を割り切れるか聞く場合は
printf(“? 10\n”); fflush(stdout);
とする.次に、
char judge[2]; scanf(“%s”, judge);
とすると変数 judge に AI の返答が入る。
またC/C++で15を暗証番号として入力する場合は
printf(“! 15\n”); fflush(stdout);
とする.
制約
- 暗証番号は1以上1000以下の整数である。
- AIに与える整数 x は1以上1000以下でなければならない。
- QLE = 200
- judge \in \{
Y
,N
\}
この問題の判定には、10点分のテストケースのグループが設定されている。このグループに含まれるテストケースは上記の制約に加えて下記の制約も満たす。
- QLE = 1000
入出力例
ゲームの説明 | プログラムの出力 | プログラムへの入力 |
---|---|---|
100 で暗証番号が割り切れるかを聞いている | ? 100 | |
AIの返答で、100 では暗証番号は割り切れないことを表す | N | |
67 で暗証番号を割り切れるかを聞いている | ? 67 | |
AIの返答で、67 では暗証番号は割り切れないことを表す | N | |
555 で暗証番号を割り切れるかを聞いている | ? 555 | |
AIの返答で、555 で暗証番号は割り切れることを表す | Y | |
555 と暗証番号を入力している | ! 555 |