求N的阶层的代码: #include <iostream> using namespace std; int high; int res[10000];//1000的阶乘显然不可能超过3000位十进制数。 void JC(int n) { int i,j; for(i=1;i<=n;i++) { // 乘以i for(j=0;j<=high;j++) { res[j]*=i; } // 处理进位 for(j=0;j<high;j++) { int carry=res[j]/10; res[j]%=10; res[j+1]+=carry; } // 处理首位 while(res[high]>9) { int carry=res[high]/10; res[high]%=10; res[++high]+=carry; } } } int main() { int n,i; while (scanf("%d",&n)!=EOF) { memset(res,0,sizeof(res)); res[0]=1; high=0; JC(n); cout<<"Total "<<high+1<<" digits."<<endl; for(i=high;i>=0;i--) { cout<<res[i]; } cout<<endl; } // 输出 return 0; } 求末尾0的个数: 至于末尾有多少个0,这个简单,0的个数为(其中的“/”是取整除法): 例子:(1000