题目:给定一个n,求得n!.比如:3,输出6
可以利用大数的原理,进行手动乘法,模拟即可
///@author:hairu,wu
//@from:ahut
#include<iostream>
#include<memory.h>
using namespace std;
struct bign{
int a[2000];
int size;
bign(){
size=0;
memset(a,0,sizeof(a));
}
};
bign fun(int x){
bign ans;
ans.a[ans.size++]=x;
return ans;
}
void Multi(bign& num,int x){
//将Num 乘以x
int r=0;
for(int i=0;i<num.size;i++){
int t=x*num.a[i]+r;
num.a[i]=t%10;
r=t/10;
}
if(r>0){
num.a[num.size++]=r;
}
}
void print(bign x){
for(int i=x.size-1;i>=0;i--){
cout<<x.a[i];
}
cout<<endl;
}
int main(){
int n;
while(cin >> n){
bign num=fun(1);
for(int i=2;i<=n;i++){
Multi(num,i);
}
print(num);//输出
}
return 0;
}