#include <iostream>
#include <math.h>
using namespace std ;
//求大数阶乘
int main(){
int n=0;//数量
cin>>n;
int numbit[10000]={0};
numbit[0]=1;
numbit[1]=1;
int talbi=1;//talbi+1=转换后位数
for(int i=1;i<=n;i++)
{
//每一位都与i相乘
for(int j=1;j<=talbi;j++){
numbit[j]*=i;
}
//看每一位的数值大小 ,是否进位
for(int x=1;x<=talbi;x++){
if(numbit[x]>=10){
//如果最后一位>=10,位数加一
for(int t=1;t<=talbi;t++){
if(numbit[talbi]>9){
talbi++;
}
//下一位
numbit[t+1] +=numbit[t]/10;
//当前为
numbit[t] %=10;
}
}
}
}
for(int z=talbi;z>0;z--){
cout<<numbit[z];
}
return 0;
}
详情参考http://blog.csdn.net/tianzhaixing2013/article/details/23706217