1172:求10000以内n的阶乘
【题目描述】
求10000以内n的阶乘。
【输入】
只有一行输入,整数n(0≤n≤10000)。
【输出】
一行,即n!的值。
【输入样例】
4
【输出样例】
24
【来源】
No
思路:
执行n次的每一次各位上的数字乘于相对应的阶乘数,在逐个进位
代码
#include<bits/stdc++.h>
int main()
{
int n,a[10005],i,j,s,m;
scanf("%d",&n);
s=1;
memset(a,0,sizeof(a)); //数组清0
a[1]=1; //赋值第一位
for (i=1;i<=n; i++)
{
for (m=1;m<=s;m++)//乘于阶数
a[m]=a[m]*i;
for(j=1;j<=s+10;j++)
while(a[j]>9) //进位操作
{
a[j+1]=a[j+1]+a[j]/10;
a[j]=a[j]%10; //余数下一位
j=j+1;
s=j;
}
}
for(i=s;i>0;i--) //倒序输出
printf("%d",a[i]);
printf("\n");
return 0;
}