#include<iostream>
using namespace std;
int main(){
int a[40000]; //100的阶乘也不会超过40000位,结果的每一位都放到数组的每一位中
int n,i,j,temp,r=0,len=1; //初始化参数,n:要计算阶乘的数,r为进位,len为中间结果的长度
while(cin>>n){
len=1,r=0,a[0]=1; //每次初始化
for(i =2; i<=n; i++){ //循环乘到n 中间结果就会变成最终的结果
for(j=0; j<len; j++){
a[j]*=i; //将中间结果的每一位都乘以循环要乘的数
}
for(j=0; j<len; j++){ //进行修正每个数组内的数字,将每个数组内的数字变成一位数字和进位
temp=r+a[j]; //
r = temp/10;
a[j] = temp%10;
}
while(r){ //将最终的进位进行循环修正,直到将进位化成每一位
a[len]=r%10;
r= r/10;
len++;
}
}
for(i=len-1;i>=0;i--){ //最终结果已经出来,len指示的是结果的长度,进行输出
cout<<a[i];
}
cout<<endl;
}
return 0;
}大数阶乘
最新推荐文章于 2019-07-13 13:29:38 发布
952

被折叠的 条评论
为什么被折叠?



