Factorial digit sum

n! means n × (n − 1) × ... × 3 × 2 × 1

For example, 10! = 10 × 9 × ... × 3 × 2 × 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!


Idea

As instructed, calculate factorial and sum all digits


In [1]:
from functools import reduce
from operator import mul
In [2]:
def factorial(n):
    return reduce(mul, range(1, n+1), 1)
In [3]:
def solve(n):
    f = factorial(n)
    s = 0
    while f:
        s += f % 10
        f //= 10
    return s
In [4]:
solve(10)
Out[4]:
27
In [5]:
solve(100)
Out[5]:
648