您的位置:首页 > 其它

HDU2212 DFS【水题】【打表】

2015-01-30 22:09 399 查看
DFS

Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5692    Accepted Submission(s): 3520

Problem Description

A DFS(digital factorial sum) number is found by summing the factorial of every digit of a positive integer. 

For example ,consider the positive integer 145 = 1!+4!+5!, so it's a DFS number.

Now you should find out all the DFS numbers in the range of int( [1, 2147483647] ).

There is no input for this problem. Output all the DFS numbers in increasing order. The first 2 lines of the output are shown below.

 

Input

no input

 

Output

Output all the DFS number in increasing order.

 

Sample Output

1

2

......

 

Author
zjt

题目大意:求范围 [1, 2147483647] 内,各个位上数字的阶乘和等于其本身的数。

思路:先写一个程序,计算 [1, 2147483647] 上,每个数的各个位上数字的阶乘和,

找到等于其本身的数,将其输出出来,然后打表就可以了。

//计算程序
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;

int jc(int N)
{
int num = 1;
for(int i = 1; i <= N; ++i)
num *= i;
return num;
}
int main()
{
for(int i = 1; i <= 2147483647; ++i)
{
int num = i,sum = 0;
while(num)
{
sum += jc(num%10);
num /= 10;
}
if(sum == i)
cout << i << " ";
}

return 0;
}
打表程序:
#include<iostream>
using namespace std;

int main()
{
cout << 1 << endl;
cout << 2 << endl;
cout << 145 << endl;
cout << 40585 << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: