Project Euler 20 Problem Statement
n! means n × (n − 1) × … × 3 × 2 × 1
Find the digit sum in the number 100!
Python natively supports arbitrary-precision integers and arithmetic with as many digits as necessary to perform a calculation. For example, it takes 158 digits to represent 100! and Python handles it easily.
The factorial function is imported from the Python math library.
from math import factorial
To solve this problem we calculate 100! and convert the result to a string so we can iterate over each character-digit (integers are not iterable, but strings are).
Then, using the
map function we iterate over the string and convert every character-digit back to an integer using the
Finally, we add the digits together for a digit sum using the
HackerRank’s Project Euler 20 increases the factorial from 100 to 1,000 and runs 100 test cases. This solution was fast enough to handle these parameters without change.
Python 2.7 Source
Embrace the power of arbitrary-precision integers and ignore the call to solve it in some primitive way.