problem 53

Problem 53 - Project Euler

nCr ( 1 ≤ n ≥ 100, 1 ≤ r ≤ n ) で 1,000,000 を超えるものはいくつあるかという問題。

n と r で 2 重ループにして足していけば良いだけです。こういう問題を loop を使わずに解けるようになりました。

(use srfi-1)

; permutation
(define (p n r)
  (apply * (iota r n -1)))

; combination
(define (c n r)
  (/ (p n r) (p r r)))

(define (p53)
  (fold (lambda (n p)
          (+ p (count (pa$ < 1000000)
                      (map (pa$ c n) (iota n 1)))))
        0 (iota 100 1)))

(print (p53))