码迷,mamicode.com
首页 > 其他好文 > 详细

ACM新生国庆训练专场

时间:2015-10-08 13:02:00      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

题目B:DFS

 

Problem Description
一个DFS(digital factorial sum)数是指各个位数的阶乘的和等于他本身的数。
比如说145=1!+4!+5!,所以145是一个DFS数。
现在请你找出 [1, 2147483647]范围内的所有DFS数。
Input
没有输入
Output
一递增的顺序输出所有的DFS数,每个数一行。
SampleInput
没有输入
SampleOutput
1
2
....
技术分享
 1 #include <stdio.h>
 2 int jc(int a);
 3 
 4 int i,a,s;
 5 int main()
 6 {
 7     for (a=1;a<=2147483647;++a)
 8     {
 9     int temp=a;
10     s=0;//计算每个位数阶乘之和
11     s=jc(temp%10);//取出个位的阶乘
12     while (temp/=10)// 除以10再mod 10得到下一位的数
13     s+=jc(temp%10);//计算下一位的阶乘
14     if (s==a)//假如符合DFS的要求就输出数值
15         printf("%d\n",a);
16     }
17     return 0;
18 }
19 
20 int jc(int a) //求阶乘函数
21 {
22     js=1;
23     for (i=1;i<=a;++i)
24         js*=i;
25     return js;
26 }
AC代码

 

ACM新生国庆训练专场

标签:

原文地址:http://www.cnblogs.com/rldlfm/p/4860637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!