#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int count=0;
while(n)
{
count+=n/5;
n/=5;
}
cout<<count<<endl;
return 0;
}
扩展:求:S=1! * 2! *3! *… *n!的末尾有多少个0
#include<iostream>
#include<algorithm>
using namespace std;
int J(long n)
{
long count=0;
while(n%5==0)
{//超时
count++;
n/=5;
}
return count;
}
int main()
{
int n;
cin>>n;
long count=0;
for(int i=1;i<=n;i++)
{
count+=(n-i+1)*J(i);
}
cout<<count<<endl;
return 0;
}
本文介绍了两个C++程序,分别用于计算1到n的阶乘末尾0的个数。第一个程序通过循环和整除5来计算,第二个程序则利用递归函数J()优化计算过程。主要关注了字符串表示的阶乘及其末尾0的形成原理。
1961

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



