結果

問題 No.39 桁の数字を入れ替え
ユーザー 綾地寧々綾地寧々
提出日時 2015-07-25 13:41:27
言語 PHP
(8.3.4)
結果
WA  
実行時間 -
コード長 1,272 bytes
コンパイル時間 2,186 ms
コンパイル使用メモリ 32,020 KB
実行使用メモリ 32,656 KB
最終ジャッジ日時 2024-07-16 04:56:03
合計ジャッジ時間 1,605 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 39 ms
32,656 KB
testcase_01 AC 38 ms
32,404 KB
testcase_02 AC 39 ms
32,528 KB
testcase_03 AC 37 ms
32,404 KB
testcase_04 AC 40 ms
32,528 KB
testcase_05 AC 38 ms
32,396 KB
testcase_06 AC 37 ms
32,396 KB
testcase_07 AC 39 ms
32,212 KB
testcase_08 AC 38 ms
32,272 KB
testcase_09 AC 37 ms
32,396 KB
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 AC 37 ms
32,532 KB
testcase_15 AC 38 ms
32,016 KB
testcase_16 AC 38 ms
32,528 KB
testcase_17 AC 41 ms
32,404 KB
testcase_18 AC 38 ms
32,276 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
No syntax errors detected in Main.php

ソースコード

diff #

<?php
$n = trim(fgets(STDIN));
$n_array = array();
// 最大値を探す(ついでに1桁ずつ分解する)
$max = FALSE;
for ( $i=0; $i<strlen($n); $i++ ) {
	$n_array[] = intval(substr($n,$i,1));
	$max = my_max($n_array[$i], $max);
}
// 最大値がどの桁にいるか探す
$max_index = array();
$min_index = FALSE;
foreach ( $n_array as $index => $value ) {
	if ( $value == $max ) {
		$max_index[] = $index;
	}
	else if ( $min_index === FALSE ) {
		$min_index = $index;
	}
}
// どこと入れ替えるか考える。
// 最大値ではない数が出てこない
if ( $min_index === FALSE ) {
	;// 何もしない
}
// 最大値が出てくる一番低い桁より、最大値ではない値が出てくる一番高い桁のほうが高い場合は、入れ替える。
else if ( $max_index[count($max_index)-1] > $min_index ) {
	swap($n_array[$min_index], $n_array[$max_index[count($max_index)-1]]);

}
echo implode("", $n_array).PHP_EOL;

function my_max ($a, $b) {
	// どっちも FALSE, または整数で同じ値
	if ( $a === $b ) {
		return $a;
	}
	// a だけが FALSE
	if ( $a === FALSE ) {
		return $b;
	}
	// b だけが FALSE
	if ( $b === FALSE ) {
		return $a;
	}
	return max($a, $b);
}

function swap (&$a, &$b) {
	$t = $a;
	$a = $b;
	$b = $t;
}
0