神秘的三位数 有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。
现在要求100到5000之间的神秘数
#include<stdio.h>
#include<iostream>
#include<cstring>
using namespace std;
int func(int a,long long int sum);//求3!+2!+1!
int jieji(long long int n);//求3! 2! 1!
int main()
{
for(int a=100;a<=5000;a++)//循环开始
{
long long int sum=0;
func(a,sum);
if(sum==a) cout<<a<<endl;//判断是否相等
else continue; //不相等就执行下一个
}
return 0;
}
int func(int a,long long int sum)//阶层
{
long long int i=1,gew[100];
while(a!=0)//分层
{
gew[i]=a%10;//3 2 1
sum=sum+jieji(gew[i]);//3!+2!+1!
i++;
a=a/10;
}
return sum;
}
int jieji(long long int n)//阶层 计算3! 2! 1!
{
long long int s=1;
if(n==0) return 0;
for(int j=1;j<=n;j++)
{
s=s*j;
}
return s;
}