题目描述
输入一个正整数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;
}