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!
Running time: 2ms
Assessment: Easy and fast using arbitrary-precision arithmetic.
import java.math.BigInteger;
public class Problem020
{
private static int sumDigits(String s)
{
int sum = 0;
for (int i = 0; i < s.length(); i++)
{
int j = Integer.parseInt(s.substring(i,i+1));
sum += j;
}
return sum;
}
public static void main(String[] args)
{
long begin = System.currentTimeMillis();
BigInteger fact = BigInteger.valueOf(1);
for (int i = 1; i <= 100; i++)
fact = fact.multiply(BigInteger.valueOf(i));
long end = System.currentTimeMillis();
System.out.println(sumDigits(fact.toString()));
System.out.println(end-begin + "ms");
}
}