首页 > 代码库 > hdoj 2212 DFS 【水】
hdoj 2212 DFS 【水】
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.
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 ......
这道题就是逗你玩呢。。。
分析: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 【水】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。