DFS
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4702 Accepted Submission(s): 2884
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.
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
Recommend
这个题目的意思是找出一个每位的阶乘之和等于这个数的数字,输出来,这个题目,我一开始看到真是表示毫无
思路,而且数还这么大,后来看
别人分析,一个数在int型范围内,最大是10位,所以需要遍历9^9的循环就可
以。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[20];
int jie(int j)
{
int sum=1;
int i;
for(i=1;i<=j;i++)
{
sum=sum*i;
}
return sum;
}
int main()
{
int i,j,k,l;
a[0]=1;//0的阶乘是1
for(i=1;i<=9;i++)
{
a[i]=jie(i);
}
int t,q,e;
for(i=1;i<=3265920;i++)
{
k=i;
l=0;
while(k)
{
t=k%10;
k=k/10;
l=l+a[t];
}
if(i==l)
{
printf("%d\n",i);
}
}
return 0;
}