标签:睡前一水
DFS
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5298 Accepted Submission(s): 3252
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
这道题就是逗你玩呢。。。
分析:9的阶乘为362880, 而且由0~9的阶乘组成的最大数就是3628800,所以搜索一下就好了,结果你会很惊讶。。。
只有1, 2, 145, 40585符合。。。
代码:
#include <stdio.h>
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;
}
也可以直接输出。。。。
hdoj 2212 DFS 【水】
标签:睡前一水
原文地址:http://blog.csdn.net/shengweisong/article/details/41230635