阶乘(factorial) |
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
输入描述:
输入数据共一行,一个正整数n,意义如“问题描述”。
输出描述:
输出一行描述答案:
一个正整数k,表示S的末尾有k个0
示例1
输入
10
输出
7
说明
数字不是非常大,只有1000万,所以可以直接暴力
阶乘后面有几个零的问题:https://blog.csdn.net/zyh2525246/article/details/53697136
这里是累乘,没5次变换一次
ac:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
int n,sum,x,m;
long long ans=0;
scanf("%d",&n);
m=n;
n=n/5*5;
for(int i=1;i<=n;i+=5)
{
sum=0,x=i;
while(x)
{
x=x/5;
sum+=5*x;
}
ans+=sum;
}
for(int i=n;i<=m;i++)
{
x=i;
sum=0;
while(x)
{
x=x/5;
sum+=x;
}
ans+=sum;
}
printf("%lld",ans);
return 0;
}