結果
| 問題 |
No.39 桁の数字を入れ替え
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-07-25 13:41:27 |
| 言語 | PHP (843.2) |
| 結果 |
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 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 15 WA * 4 |
コンパイルメッセージ
No syntax errors detected in Main.php
ソースコード
<?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;
}