結果
| 問題 | 
                            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;
}