結果
| 問題 |
No.8 N言っちゃダメゲーム
|
| コンテスト | |
| ユーザー |
yuma25689
|
| 提出日時 | 2015-11-04 16:57:41 |
| 言語 | PHP (843.2) |
| 結果 |
AC
|
| 実行時間 | 43 ms / 5,000 ms |
| コード長 | 1,928 bytes |
| コンパイル時間 | 420 ms |
| コンパイル使用メモリ | 32,020 KB |
| 実行使用メモリ | 32,528 KB |
| 最終ジャッジ日時 | 2024-09-13 12:24:54 |
| 合計ジャッジ時間 | 1,204 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 11 |
コンパイルメッセージ
No syntax errors detected in Main.php
ソースコード
<?php
// P
// N1 K1
// N2 K2
// …
// NP KP
// 1行目に、ゲームの回数を表す整数P (1≤P≤100)が与えられる。
// 続くP行に各ゲームの条件を表す整数 N (2≤N≤120000) と K (2≤K≤120000)が与えられる。
// 出力
// 全部でP行、各ゲームの勝敗を Win または Lose で出力してください。
// 行の最後に改行してください。
// 1 <= count <= 100
$game_count = trim(fgets(STDIN));
//
// const MAX=10000;
// $CombinationOfThisWeightExist = array_fill(0,MAX,False);
// $CombinationOfThisWeightExist[0] = True;
while($game_count--)
{
$game_stat=explode(' ',trim(fgets(STDIN)));
$current=0;
$you_are_winner=True;
// (2<=rangeMax<=120000)
$rangeMax=intval($game_stat[0]);
// (2<=addMax<=120000)
$addMax=intval($game_stat[1]);
//print("${rangeMax},${addMax}".PHP_EOL);
// 自分が先行
// $rangeMax-1をゲットした方が勝利と思われる
// そうすると、$rangeMax-1-$addMax-1をゲットで勝ちとなる気がする
// さらにそうすると、$rangeMax-1-$addMax-1-$addMax-1をゲットで勝ちとなる気がする
// $rangeMax-1-($addMax+1)*nをゲットできるかどうかの勝負?
// 例えば、21,3だと、20-4n=>4,8,12,16,20のいずれかをゲットで勝利(出番が終わった後の話)
// 例えば、12,5だと、11-6n=>5,11のいずれかをゲットで勝利(出番が終わった後の話)
// とりあえず、このプログラムでは勝てる数字の0より大きい中で一番小さいものをプレイヤーがゲットできるかを調べる
$target=$rangeMax-1;
//$n=0;
//while( 0 < $target-($addMax+1)*($n+1) ) $n++;
$target %= ($addMax+1);//-= ($addMax+1)*($n);
//print("${target}=${rangeMax}-1-(${addMax}+1)*${n}".PHP_EOL);
if( $target!=0 && $target <= $current + $addMax )
// この時のターンの人が勝利
print('Win'.PHP_EOL);
else
print('Lose'.PHP_EOL);
}
yuma25689