Euler Project – Problem 20 Solution: 648

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!

Solution

public class Problem20 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
       
        String product = "1";
        for (int i = 1; i <= 100; i++) {
            product = multiply(product, i);
        }
       
        char[] product_digits = product.toCharArray();
        int sum = 0;
        for (char c : product_digits) {
            int digit = Integer.parseInt(String.valueOf(c));
            sum += digit;
        }
        System.out.println(sum);
       
    }
   
    public static String multiply(String num1, int num2){
       
        char[] num1_digits = num1.toCharArray();
        int remainder = 0;
        String result = "";
        for (int i = num1_digits.length-1; i >= 0; i--) {
            char c = num1_digits[i];
            int digit = Integer.parseInt(String.valueOf(c));
            int x = digit*num2+remainder;
            result=x%10+result;
            remainder = (x-x%10)/10;
        }

        if(remainder>0){
            result = remainder + result;
        }
       
        return result;
       
    }
   
}