传送门 : http://acm.hdu.edu.cn/showproblem.php?pid=2212
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
1
2
……
0~9阶乘暴力打表, 但是给的时间的数 2147483647 太大 测试后面其实出不来结果了 ,少开2位就过了
#include<cstdio>
#include<iostream>
//#include<bits/stdc++.h>
#include <string.h>
using namespace std;
int main()
{
int a[10];
a[0] = 1;
int sum=1;
for (int i=1; i<10; i++)
{
sum *= i;
a[i] = sum;
}
for (int i=1; i<=21474836; i++)
{
int ans=0;
int n=i;
while (n)
{
ans+= a[n%10];
//printf("~~~~\n");
n = n/10;
//printf ("%d\n",i);
}
if (i==ans)
printf ("%d\n",ans);
}
return 0;
}