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!


In [1]:
import operator

In [2]:
def foo(n):
    return reduce((lambda x, y: int(x) + int(y)), str(reduce(operator.mul, range(1, 100 + 1))))

In [3]:
n = 100
%timeit foo(n)
foo(n)


1000 loops, best of 3: 233 us per loop
Out[3]:
648