一.题目描述:
输入一个正整数N,输出N的阶乘。
输入:
正整数N(0<=N<=1000)
输出:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
样例输入: 4
5
15
样例输出: 24
120
1307674368000
二.题目分析
大数据乘法,注意数组保存,模拟乘法。
三.代码
#include <stdio.h>
#include <stdlib.h>
int fact(int *a,int n)
{
int len,i,j,over,temp;
a[0]=1;len=1;
if(n==0||n==1)
return len;
for(i=2;i<=n;i++)
{
over=0;
for(j=0;j<len-1;j++)
{
temp=a[j]*i+over;
a[j]=temp%10;
over=temp/10;
}
temp=a[j]*i+over;
while(temp)
{
a[j++]=temp%10;
temp /=10;
}
len=j;
}
return len;
}
int main()
{
int n,a[10010],i,len;
while(scanf("%d",&n)!=EOF)
{
len=fact(a,n);
for(i=len-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}