n! = n × (n − 1) × … × 3 × 2 × 1
例如, 10! = 10 × 9 × … × 3 × 2 × 1 = 3628800,
那么10!的各位之和就是3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
算出100!的各位之和。
import math
# 直接计算
print(sum([int(i) for i in str(math.factorial(100))]))
# 按位计算
n = 100
factorial_list = [1]
for i in range(1, n):
d = 0
for j in range(len(factorial_list)):
prod_ = factorial_list[j] * i + d
factorial_list[j] = prod_ % 10
d = prod_ // 10
while d > 0:
factorial_list.append(d % 10)
d //= 10
print(sum(factorial_list))