本人初学者,求下题的代码,配有解释最好
求这样一个三位数,该三位数等于其每位数字的阶乘之和。
即 abc = a! + b! + c!
[解决办法]
int fun(int a,int b,int c)
{
int x=y=z=1;
for(;a> 1;a--)
{
x*=a;
}
for(;b> 1;b--)
{
yj*=b;
}
for(;z> 1;z--)
{
z*=c;
}
return x+y+z;
}
int main()
{
int a=3;
int b=3;
int c=3;
int abc = fun(a,b,c);
}
[解决办法]
#include <stdio.h>
int con(int);//判断是否附合条件
long fact(int);//取阶乘
int main(void){
int num;
printf( "Please insert the number:\n ");
scanf( "%d ",&num);
if(con(num))
printf( "The number is right!\n ");
else
printf( "The number is wrong! ");
return 0;
}
int con(int n){
int a= n/100;
int b= (n-a)/10;
int c=n-a-b;
if(fact(a)+fact(b)+fact(c)==n)
return 1;
else
return 0;
}
long fact(int n){
long ans;
if (n> 0)
ans = n*fact(n-1);
else
ans = 1;
return ans;
}
LCC-WIN32上编译通过
[解决办法]
UINT factor(UINT a)
{
if(a == 1) return 1;
if(a == 0) return 0;
return a*factor(a-1);
}
UINT GetNumFactor(UINT num)
{
UINT temp = 0;
UINT sum = 0;
while (num)
{
temp = num%10;
sum += factor(temp);
num /= 10;
}
return sum;
}
int main()
{
const unsigned long MAX_NUM = 1000;
for (UINT i = 100; i < MAX_NUM; ++i)
{
if (i == GetNumFactor(i))
{
cout < < i < < endl;
}
}
return 0;
}