计算阶乘的和v2.0(4分)
题目内容:
假设有这样一个三位数m,其百位、十位和个位数字分别是a、b、c,如果m= a!+b!+c!,则这个三位数就称为三位阶乘和数(约定0!=1)。请编程计算并输出所有的三位阶乘和数。
函数原型: long Fact(int n);
函数功能:计算n的阶乘
输入格式: 无
输出格式:"%d\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。
时间限制:500ms内存限制:32000kb
#include <stdio.h>
long Fact(int n);
int main()
{
int a, b, c, m, n, sum1, sum2, sum3; //m代表每一位三位数;a,b,c储存三位数的每一位;n作为每个三位数的每一位数计算阶乘时的中间量;sum1,sum2,sum3分别储存每一位数的阶乘
for (m=100; m <= 999; m++)
{
a=m/100;
b=m%100/10;
c=m%10;
n=a; //将a的值赋给n,这样计算n的阶乘就等于计算a的阶乘。下同
sum1=Fact(n);
n=b;
sum2=Fact(n);
n=c;
sum3=Fact(n);
if (m == sum1+sum2+sum3)
{
printf("%d\n", m);
}
}
return 0;
}
//函数:计算n的阶乘
long Fact(int n)
{
int multi=1;
while (n >= 1)
{
multi*=n; //到循环结束时,multi=n*(n-1)*(n-2)*...*1
n--;
}
return multi;
}