Problem:
Please find the problem here.
Solution:
It is well known that we can use Strling's approximation to approximate factorial, let see what we'll get from it. First of all, we have
√2πnn+12e−n≤n!≤enn+12e−n
Only the term nn+12e−n matters, the rest are small. That gives us 100! is approximately 1.01×10158.
This number is not small, but it is manageable to just compute 100! I don't have other solution to compute the sum of the digits anyway. Here is the code
Answer: 648
The value of 100! is actually
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
Please find the problem here.
Solution:
It is well known that we can use Strling's approximation to approximate factorial, let see what we'll get from it. First of all, we have
√2πnn+12e−n≤n!≤enn+12e−n
Only the term nn+12e−n matters, the rest are small. That gives us 100! is approximately 1.01×10158.
This number is not small, but it is manageable to just compute 100! I don't have other solution to compute the sum of the digits anyway. Here is the code
namespace Euler { using System; using System.Linq; using System.Numerics; internal static partial class Program { public static void Problem020() { BigInteger prod = new BigInteger(1); for (int i = 2; i <= 100; i++) { prod = BigInteger.Multiply(prod, new BigInteger(i)); } Console.WriteLine(prod.ToString().Select(i => i - '0').Aggregate((x, y) => x + y)); } } }
Answer: 648
The value of 100! is actually
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
It has 159 digits, so the Stirling approximation above is pretty close.