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