<?php // 0-9 の重複無し順列なので、全部で 3,628,800 通り // 数が多くないので全数チェックでも行ける // 0 で始まる順列は362880 通り、 $answer = ""; $array = array(0,1,2,3,4,5,6,7,8,9); $num = 0; $num1 = 1000000 - 1; $num2 = 9*8*7*6*5*4*3*2*1; $num3 = 9; while($num3 != 0) { while($num1 - $num2 >= 0) { $num1 -= $num2; $num++; } echo $num." ".$num1."\n"; $answer .= $array[$num]; unset($array[$num]); $array = array_values($array); $num = 0; $num2 /= $num3; $num3--; } $answer .= $array[0]; echo "\n".$answer; ?>