DFSTimeLimit: 50002000 MS (JavaOthers) & #160; & #160; & #160; & #160; MemoryLimit: 6553632768 K (JavaOthers) TotalSubmission (s): 5298 & #160; & #160; & #160; & #160; Accepted
DFSTime Limit: 5000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission (s): 5298 Accepted Submission (s): 3252
Problem DescriptionA 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.
Inputno input
OutputOutput all the DFS number in increasing order.
Sample Output
12......
This question is just a joke...
Analysis: the factorial of 9 is 362880, and it ranges from 0 ~ The maximum number of factorial 9 is 3628800, so you can just search for it, and you will be surprised...
Only 1, 2,145,405 85...
Code:
#include
int f[10] = {1, 1};int a[10];void ff(){ int i; for(i = 2; i < 10; i ++) f[i] = f[i-1]*i; //printf("%d", f[9]);}int judge(int n){ int sum1 = n, sum2; sum2 = 0; while(n){ int temp = n%10; sum2 += f[temp]; n/= 10; } if(sum1 == sum2) return 1; return 0;}int main(){ ff(); for(int i = 1; i <= 3628800; i ++) if(judge(i)) printf("%d\n", i); return 0;}
You can also directly output ....