Problem 20
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!
C++:
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1000;
int result[MAXN+1];
int factorial(int n)
{
int digits, j;
memset(result, 0, sizeof(result));
result[0] = 1;
digits = 1;
for(int i=2; i<=n; i++) {
int carry = 0;
for(j=0; j<digits; j++)
result[j] *= i;
for(j=0; j<=digits || carry; j++) {
result[j] += carry;
carry = result[j] / 10;
result[j] %= 10;
}
digits = j;
}
return digits;
}
int main()
{
int n, digits;
while(cin >> n) {
digits = factorial(n);
int sum = 0;
for(int i=0; i<=digits; i++)
sum += result[i];
cout << sum << endl;
}
return 0;
}