题目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代码
时间: 2024-10-05 17:43:25