Problem 30 - 各桁をn乗した和
求めてみたけど、まだ不明な点がある。
驚くべきことに, 各桁を4乗した和が元の数と一致する数は3つしかない.
* 1634 = 1^4 + 6^4 + 3^4 + 4^4
* 8208 = 8^4 + 2^4 + 0^4 + 8^4
* 9474 = 9^4 + 4^4 + 7^4 + 4^4ただし, 1=1^4は含まないものとする. この数たちの和は 1634 + 8208 + 9474 = 19316 である.
各桁を5乗した和が元の数と一致するような数の総和を求めよ.
終わり方がイマイチ。number->listは略。
(define (problem30 k) (define (iter n) (cond ((= n 1) '()) ((= n (apply + (map (lambda (n) (expt n k)) (number->list n)))) (cons n (iter (- n 1)))) (else (iter (- n 1))))) (iter (expt 9 (+ k 1)))) (problem30 4) ; (9474 8208 1634) (apply + (problem30 4)) ; 19316 (problem30 5) ; (194979 93084 92727 54748 4151 4150) (apply + (problem30 5)) ; 443839
なぜ(expt 9 (+ k 1)))までで良いのかが解らない。ちと考えてみる。