该题是算法设计与分析第三章课后习题第十一题;大概意思就是给定一个数n(1<=n<=10000),求n!后面有几个零。程序代码如下(使用数组进行存储)
#include<iostream.h>
//#include<vector.h>
void main()
{
int n,mod,d,x,k=0,sign=0;
int a[10000];
a[0]=1;
cout<<"请输入一个数n:"<<endl;
cin>>n;
for(int i=1;i<=n;i++)
{
mod=0;d=0;
for(int j=0;j<=k;j++)
{
x=a[j]*i+d;
mod=x%10;//取余
a[j]=mod;
d=x/10;//取整
}
while(d!=0)
{
mod=d%10;
k=k+1;
a[k]=mod;
d=d/10;
}
}
cout<<n<<"!=";
for(int s=k;s>=0;s--)
cout<<a[s];
cout<<endl;
for(int m=0;m<=k;m++)
{
if(a[m]==0)sign++;
else
{
cout<<n<<"!后面共有"<<sign<<"个零"<<endl;
return ;
}
}
}