<?php // 10^n の時点で、必ず桁数はn より大きくなる。 // pow だと桁あふれするので、無理やり解く。 $num = 1; $answer = 0; $before = 0; while(true) { $i = 9; while($i > 0) { $pow1 = 1; $pow2 = 0; for($j = 1 ; $j <= $num ; $j++) { $pow1 *= $i; $pow2 *= $i; while($pow1 > 100000000000000000) { $pow2 ++; $pow1 -= 100000000000000000; } } if($pow2 != 0) { $strlen = strlen($pow1) + strlen($pow2); } else { $strlen = strlen($pow1); } if($strlen == $num) { $answer++; } else if($strlen < $num) { break; } $i--; } if($before == $answer) { break; } $before = $answer; $num++; } echo $answer."\n"; ?>