Problem H
99
Languages
en
et
is
ja
lv
pl
ru
あなたとあなたの友人は、99というゲームをしています。 まず、$1$か$2$のどちらかの数字を言うことから始めます。 次に友達から順番に、前の数に$1$か$2$のどちらかの数を増やしていきます。 最初に$99$を言った人が勝ちです。 You and your friend are playing a game which you call Ninety-nine. You start, by saying either the number $1$ or $2$. You then take turns, starting with your friend, increasing this number by either $1$ or $2$ in each step. The first player who gets to say the number $99$ wins!
このゲームを行うプログラムを書き、勝利してください。
インタラクティブ
この問題はインタラクティブです。
あなたのプログラムが最初に$1$か$2$のいずれかを1行に出力します。 審査システムがその数($x$とします)を読み取り、$x+1$か$x+2$をあなたのプログラムが読み取れるように出力します。 あなたのプログラムはさらに$1$か$2$大きい数を出力し、というのを繰り返します。
ゲームに勝ち、$99$を出力したら、あなたのプログラムは正常終了(ステータスコード0で)します。 一方、あなたのプログラムが$99$を読み取った場合も正常終了してください。ただし、テストはWrong Answerで失敗となります。 不正な値($99$を超える値を含む)を出力した場合もテストは失敗します。この場合、あなたのプログラムは終了すると仮定します。 あなたのプログラムが終了すべき時点で終了しなかった場合もテストは失敗します。この場合は、状況に応じてWrong Answer、Runtime Error、Time Limit Exceededのいずれかになります。
あなたは審査システムの応答を読み込む前に標準出力をflushしなければなりません。 さもないと、あなたのプログラムはTime Limit Exceededと判定されます。これは、各言語では以下のように行います。
-
Java: System.out.println() 自動的にflushします。
-
Python: print() 自動的にflushします。
-
C++: cout << endl; flushし、さらに改行を出力します。printfを使用する場合は、fflush(stdout)を行います。
-
Pascal: Flush(Output)
制約
あなたのソリューションは、テストグループのセットでテストされ、それぞれのグループにポイントが定義されています。 各テストグループにはテストケースのセットが含まれています。 テストグループのポイントを得るためには、テストグループ内のすべてのテストケースが成功する必要があります。 あなたの最終的なスコアは、1回の提出での最大スコアとなります。
グループ |
ポイント |
制約 |
1 |
30 |
Your friend always increases the number by 1. |
2 |
30 |
Your friend always increases the number by 2 (unless at 98). |
3 |
40 |
Your friend plays randomly, with each option having 50% probability (unless at 98). |