您的位置:首页 > 其它

Project Euler Problem 34 Digit factorials

2017-03-28 17:48 323 查看
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
= {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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: