Project Euler Problem 34 Digit factorials
Problem 34
145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145.
Find the sum of all numbers which are equal to the sum of the factorial of their digits.
Note: as 1! = 1 and 2! = 2 are not sums they are not included.
C++:
#include <iostream>
using namespace std;
const int MAX = 2540160;
const int N = 10;
long factorials[N] = {1, 1};
int main()
{
for(int i=2; i<N; i++)
factorials[i] = factorials[i - 1] * i;
cout << "9! = " << factorials[9] << endl;
cout << "7 * 9! = " << 7 * factorials[9] << endl;
cout << "8 * 9! = " << 8 * factorials[9] << endl;
long total = 0;
for(long i=3; i<=MAX; i++) {
long t = i, sum;
sum = 0;
while(t) {
sum += factorials[t % 10];
t /= 10;
}
if(sum == i)
total += i;
}
cout << total << endl;
return 0;
}
浙公网安备 33010602011771号