题目链接:https://projecteuler.net/problem=34
理性分析一下,发现暴力到1e6肯定是够的
代码:
#include<bits/stdc++.h>
using namespace std;
int fac[10];
void init()
{
fac[0]=1;
for(int i=1;i<=9;i++)
{
fac[i]=fac[i-1]*i;
}
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int ans=0;
init();
for(int i=3;i<=1000000;i++)
{
int x=i,tot=0;
while(x)
{
tot+=fac[x%10];
x/=10;
}
if(tot==i)
ans+=i;
}
printf("%d\n",ans);
return 0;
}