题目描述
输入一个正整数N,输出N的阶乘。
输入
正整数N(0<=N<=1000)
输出
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
样例输入
0 4 7
样例输出
1 24 5040
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;
struct bign{
int d[3000];
int len;
bign()
{
memset(d,0,sizeof(d));
len=0;
}
};
bign multi(bign a,int b)
{
bign c;
//c.len--;
int carry=0;
for(int i=0;i<a.len;i++)
{
int temp=a.d[i]*b+carry;
c.d[c.len++]=temp%10;
carry=temp/10;
}
while(carry!=0){
c.d[c.len++]=carry%10;
carry/=10;
}
return c;
}
int main()
{
int n,i;
while(scanf("%d",&n)!=EOF){
bign c;
c.d[0]=1;
c.len=1;
for(i=1;i<=n;i++)
{
c=multi(c,i);
}
for(int i=c.len-1;i>=0;i--)
{
printf("%d",c.d[i]);
}
printf("\n");
}
return 0;
}