/*6个9组成的六位数的各位数阶乘和为7位,7个9也是七位,8个9,9个9也都是七位,
由此可知,从位数为7开始,阶乘和的增长跟不上位数的增长所以最多就是7位数*/
#include <iostream>
#include <Windows.h>
using namespace std;
int factorial(int n)
{
int s = 1;
for (int i = 1; i <= n; ++i)
s *= i;
return s;
}
int main()
{
DWORD s = GetTickCount();
{
int f_[10];
int ss = 0;
for (int i = 0; i < 10; ++i)
{
f_[i] = factorial(i);
}
for (int i = 11; i < 10000000; ++i)
{
int t = i;
int num[7] = { 0 };
int n=0;//位数
int sum = 0;
while (t > 0)
{
num[n] = t % 10;
t /= 10;
n++;
}
for (int i = 0; i < n; ++i)
sum += f_[num[i]];
if (sum == i)
{
cout << i << endl;
ss += i;
}
}
cout << "the sum is " << ss << endl;
}
DWORD e = GetTickCount();
cout << "The running time is " << e - s << " ms" << endl;
system("pause");
}
转载于:https://my.oschina.net/u/3772904/blog/1807044