fork download
  1. #!/usr/bin/perl
  2.  
  3. use bigint;
  4.  
  5. $re_code = qr/[\x00-\x7f]|[\xc0-\xdf].|[\xe0-\xef]..|[\xf0-\xf7].../;
  6.  
  7. for $s ( <STDIN> ) {
  8. chomp $s;
  9. %d = ();
  10. for $c ( $s =~ /($re_code)/g ) { $d{$c} ++; }
  11. printf "%s : %d\n", $s, &ao($s, \%d);
  12. }
  13.  
  14. sub ao {
  15. my($s, $ad) = @_;
  16. return 1 unless length $s;
  17. my($h, $t) = ( $s =~ /($re_code)(.*)$/ );
  18. my %d = %$ad;
  19. my $r = 0;
  20. for $c ( sort keys %d ) {
  21. delete $d{$c} unless -- $d{$c};
  22. return $r + &ao($t, \%d) if $c eq $h ;
  23. my($p, $k) = (1, 1);
  24. for $v ( values %d ) { for $i ( 1 .. $v ) { ($p *= $k ++) /= $i; } }
  25. $r += $p;
  26. $d{$c} ++;
  27. }
  28. }
Success #stdin #stdout 0.23s 11792KB
stdin
hello
cabaac
2021312
This is an apple.
いろはにほへとちりぬるを
ちょっとちょっと、大嶋さん。小島だよ!
N進数を出せばいいだけじゃねえのコレ
やってみろやカス
stdout
hello : 13
cabaac : 47
2021312 : 197
This is an apple. : 975082180080
いろはにほへとちりぬるを : 34213807
ちょっとちょっと、大嶋さん。小島だよ! : 2031206446571101
N進数を出せばいいだけじゃねえのコレ : 177711190399105
やってみろやカス : 7567