<?php // 362880 * 7 = 2540160 が最大値 // 7 桁目は2! が最大なので、362880 * 6 + 2 = 2177282 が最大値 $fact = array(0=>1,1=>1,2=>2,3=>6,4=>24,5=>120,6=>720,7=>5040,8=>40320,9=>362880); $answer = 0; for($i = 10 ; $i <= 2177282 ; $i++) { $tmp = 0; $len = strlen($i); for($j = 0 ; $j < $len ; $j++) { $tmp += $fact[substr($i,$j,1)]; } if($i == $tmp) { echo $i."\n"; $answer += $i; } } echo $answer; ?>