結果

問題 No.8 N言っちゃダメゲーム
ユーザー yuma25689yuma25689
提出日時 2015-11-04 16:49:52
言語 PHP
(8.3.4)
結果
AC  
実行時間 47 ms / 5,000 ms
コード長 1,893 bytes
コンパイル時間 6,202 ms
コンパイル使用メモリ 32,016 KB
実行使用メモリ 32,528 KB
最終ジャッジ日時 2024-09-13 12:24:50
合計ジャッジ時間 1,247 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 42 ms
32,276 KB
testcase_01 AC 41 ms
32,528 KB
testcase_02 AC 42 ms
32,272 KB
testcase_03 AC 42 ms
32,400 KB
testcase_04 AC 47 ms
32,020 KB
testcase_05 AC 42 ms
32,020 KB
testcase_06 AC 41 ms
32,216 KB
testcase_07 AC 41 ms
32,216 KB
testcase_08 AC 42 ms
32,400 KB
testcase_09 AC 41 ms
32,084 KB
testcase_10 AC 42 ms
32,212 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
No syntax errors detected in Main.php

ソースコード

diff #

<?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)*($n);
	//print("${target}=${rangeMax}-1-(${addMax}+1)*${n}".PHP_EOL);
	if( $target <= $current + $addMax )
		// この時のターンの人が勝利
		print('Win'.PHP_EOL);
	else
		print('Lose'.PHP_EOL);
}
0