DFS
名字糊弄人,,打表就会发现就4个数。0! = 1。
#include <cstdio> #include <cstring> #include <iostream> using namespace std; #define MAX 50000 #define LL long long int num[10]; void Init(){ num[0] = 1; for(int i = 1;i <= 9;i++){ num[i] = 1; for(int j = 1;j <= i;j++){ num[i] = num[i] * j; } } } bool Judge(int x){ LL sum = 0,temp = x; while(x){ sum += num[x % 10]; x /= 10; } if(temp == sum) return true; return false; } int main(){ printf("1\n"); printf("2\n"); printf("145\n"); Init(); for(int i = 146;i <= MAX;i++){ if(Judge(i))printf("%d\n",i); } return 0; }