sub e{ use integer; my @e=(1) x shift; for(1..@e*log(@e)/3){ for(reverse(1..$#e)){ $e[$_-1]+=$e[$_]/$_; $e[$_]%=$_; } printf"%01d",$e[0]; $e[0]=0; $_*=10 for @e; } }