Project Euler Problem 34 Digit factorials

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;
}



posted on 2017-03-28 17:48  海岛Blog  阅读(127)  评论(0编辑  收藏  举报

导航