Digit factorials
2014-09-23
Problem 034: Digit factorials
145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145.
Find the sum of all numbers which are equal to the sum of the factorial of their digits.
Note: as 1! = 1 and 2! = 2 are not sums they are not included.
Solution:
v
>1:00p1*:10p2*:20p3*:30p4*:40p5*:v
vp110$p09:*9p08:*8p07:*7p06:*6p05<
v_v# :-1<p11 <
>90g7*>::0\>:55+%0g\55+/:#v_>+#<\:#<_+-| +
>3-.$@ |:/+55\g0%+55: < >:11g^
^g11< > ^
>1:00p1*:10p2*:20p3*:30p4*:40p5*:v
vp110$p09:*9p08:*8p07:*7p06:*6p05<
v_v# :-1<p11 <
>90g7*>::0\>:55+%0g\55+/:#v_>+#<\:#<_+-| +
>3-.$@ |:/+55\g0%+55: < >:11g^
^g11< > ^
Start
??
Pause
Reset
Output:
Stack: (0)
Explanation:
Not much to say here, we save the factorial values to increase speed and operate almost entirely on the stack (also for speed).
The rest is brute force. Our upper limit is 9!*7 = 2540160
, because 9!*8
has only 7 digits and so is impossible to be a curious number.
Interpreter steps: | 493 980 359 |
Execution time (BefunExec): | 1min 20s (6.10 MHz) |
Program size: | 45 x 7 (fully conform befunge-93) |
Solution: | 40730 |
Solved at: | 2014-09-23 |