fork(1) download
  1. #!/usr/bin/perl
  2.  
  3. use bigint;
  4. for( <> ) { chomp; printf "%s -> %s\n", $_, &s9($_, 9); }
  5.  
  6. sub s9 {
  7. my($n, $m) = @_;
  8.  
  9. return 0 unless $m;
  10. my($b, $c, $k) = (1, 1, 0);
  11. $n -= $c, $b *= 10, $c *= $m + $k, $c /= ++ $k while $c < $n;
  12. $b + &s9($n, -- $m);
  13. }
Success #stdin #stdout 0.06s 11728KB
stdin
12
12345
123456789
stdout
12 -> 117
12345 -> 100204200
123456789 -> 30000100000100000021000001000