/******************************************************************/
/* 学生:刘中华 */
/* 日期:2014-1-1 */
/* 内容:学习函数的定义及调用,实现功能为求满足n=a!+b!+c! */
/* 的所有三位数n */
/* */
/******************************************************************/
#include<iostream>
using namespace std;
long fac(int n);//函数返回值的类型选择是易错点
void main()
{
int a,b,c;
long sum;
for(int i=100;i<1000;i++)
{
a=i/100;
b=(i-100*a)/10;
c=i-100*a-10*b;
sum=fac(a)+fac(b)+fac(c);//调用求阶乘函数并求和,这里我没有计算是否会溢出,应该不会吧,
//cout<<a<<" "<<b<<" "<<c<<endl;//开始想当然的用取余求每个数位的值,结果没得出结果,这里是设置观察量
//cout<<i<<" "<<sum<<endl;
if(i==sum)
cout<<i<<endl;
}
//cout<<fac(0)<<endl;
}
long fac(int n)//求n的阶乘函数,这里考虑到9的阶乘已经远远超过了int的表示范围,故选择长整型
{
int k;
long mul=1;
for(k=0;k<n;k++)
mul*=n-k;
return mul;//return函数,第一次用,以后应多加注意
}