#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; }