#include <iostream>
using namespace std;
int main()
{ int n,i,j,l,sum,c;
cin>>n;
//计算n!的位数len
double m=1;
l=1;
for(i=1;i<=n;i++)
{
m=m*i; //这步只需计算位数,不管阶层数
}
while(m >=10.0) //获取阶乘结果的位数
{
l++;
m/=10;
}
cout<<"n!共有位数:"<<l<<endl;
int a[l];
for(i=0;i<l;i++)
a[i]=0;
a[0]=1;
for(i=2;i<=n;i++)
{
c=0;//进位数
for(j=0;j<l;j++)
{
sum=a[j]*i+c;
a[j]=sum%10;
c=sum/10;
}
}
for(i=l-1;i>=0;i--)//权值越大,下标越大,需倒序输出
cout<<a[i];
cout<<endl;
return 0;
}
数阶乘末尾有几个零
#include<iostream>
using namespace std;
int main()
{
int m;
cin>>m;
int sum=0;
while(m){
sum+=m/5;
m=m/5;
}
cout<<sum<<endl;
return 0;
}
求末尾有几个零相当于求这个数由多少个2*5组成
因而求出其因式有多少个5