숫자 145에는 신기한 성질이 있습니다. 각 자릿수의 팩토리얼(계승)을 더하면 1! + 4! + 5! = 1 + 24 + 120 = 145 처럼 자기 자신이 됩니다.
이렇게 각 자릿수의 팩토리얼을 더하면 자기 자신이 되는 모든 수의 합을 구하세요.
단, 1! = 1 과 2! = 2 의 경우는 덧셈이 아니므로 제외합니다.
$l 에 한계값 넣고 돌린다.
오래걸린다. 약 28초…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/usr/bin/env perl use 5.010; use strict; use warnings; my $r = 0; my $l = 9; my @f; push @f, f($_) for (0..9); $l .= 9 while ($l < length($l)*($f[9])); for my $i (3..$l) { my $a = 0; $a += $f[$_] for (split (//, $i)); $r += $i if ($i == $a); } say $r; sub f { my $r = 1; $r *= $_ for (1..$_[0]); return $r; } |