プロジェクト

全般

プロフィール

操作

ホーム - Project Euler

Problem 20

Factorial Digit Sum

$n!$ means $n \times (n - 1) \times \cdots \times 3 \times 2 \times 1$.
For example, $10! = 10 \times 9 \times \cdots \times 3 \times 2 \times 1 = 3628800$,
and the sum of the digits in the number $10!$ is $3 + 6 + 2 + 8 + 8 + 0 + 0 = 27$.
Find the sum of the digits in the number $100!$.

各位の数字の和 2

n × (n - 1) × ... × 3 × 2 × 1 を n! と表す.
例えば, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800 となる.
この数の各桁の合計は 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 である.
では, 100! の各位の数字の和を求めよ.
注: Problem 16 も各位の数字の和に関する問題です。解いていない方は解いてみてください。

#!r6rs
#!chezscheme

(import (chezscheme))

(define (each-numbers num)
  (let ([number-chars (string->list (number->string num))])
    (map
      (lambda (char)
        (char- char #\0))
      number-chars)))

(define iota-1-100
  (cdr (iota 101)))

(define answer-20
  (apply + (each-numbers (apply * iota-1-100))))

(printf "20: ~D~%" answer-20)

Noppi2024/01/02に更新 · 2件の履歴