Zachary Stence

Problem 20: Factorial digit sum

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!

#include <iostream>
using namespace std;

void multiply(int arr[], int size, int mult) {
  for (int i = 0; i < size; i++) {
    arr[i] *= mult;
  }
}

void carry(int arr[], int size) {
  for (int i = size - 1; i >= 0; i--) {
    int ones = arr[i] % 10;
    int tens = arr[i] / 10;
    arr[i] = ones;
    arr[i-1] += tens;
  }
}

void display(int arr[], int size) {
  for (int i = 0; i < size; i++) {
    cout << arr[i];
  }
  cout << endl;
}

int digitSum(int arr[], int size) {
  int sum = 0;
  for (int i = 0; i < size; i++) {
    sum += arr[i];
  }
  return sum;
}

int main() {
  int num[158];
  num[157] = 1;
  for (int i = 0; i < 157; i++) {
    num[i] = 0;
  }

  for (int m = 1; m <= 100; m++) {
    multiply(num, 158, m);
    carry(num, 158);
  }
  cout << digitSum(num, 158) << endl;
}

Answer: 648