class CountZero: def count(self, x): res, pre = 0, 0 for i in range(5, x+1): while i%5 == 0: i //= 5 pre += 1 res += pre return res k = int(input()) print(CountZero().count(k))
import math n = int(input()) if n <=0: print(0) else: res = 0 k = int(math.log(n,5)) for i in range(1,n+1): for j in range(1,k+1): res += i//(5**j) print(res)
nums=[0]k=0j=0n=int(input())for i in range(n):l=len(nums)if l%5==0:while l%5 ==0:k=k+1l=l//5nums.append(nums[-1]+k)print(nums[-1])
n = int(input()) res = 0 for i in range(1,n+1): temp = 5 while(i//temp>=1 ): res+=i//temp temp*=5 print(res)
class MainActivity: def main(self): # Read the data n = int(input()) # Initialization result = 0 # Traverse for num in range(1, n + 1): cnt = 0 base = 5 while num // base: cnt += num // base base *= 5 result += cnt print(result) if __name__ == '__main__': M = MainActivity() M.main()
import java.util.*;
public class Main {
public static void main(String []args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int count=0;
int sum=0;
//4以上的阶乘中才会出现5;5的阶乘有1个5;
//6的阶乘中5的个数就等于:5的阶乘中5的个数+6自身可以分解出5的个数
//i的阶乘中5的个数就等于:i-1的阶乘中5的个数+i自身可以分解出5的个数
//count是前一个阶乘中5的个数;
//sum=5的阶乘中5的个数+6的阶乘中5的个数+...i的阶乘中5的个数=每一个阶乘中5的个数相加
for(int i=5;i<=n;i++){
int ret=i;
while(ret%5==0){
//对于i的阶乘(1*2*..(i-1)*i)=((i-1)!*i)来说:之前count的数量的是i-1阶乘的个数;在count的基础上再加上i自身可以分解出5的个数,结果就为i的阶乘中的5的个数了
count++;
ret/=5;
}
sum+=count;
}
System.out.println(sum);
}
} import java.util.Scanner;
public class Main{
public static int fun(int num,int n){
int count = 0;
while(num >= n && num % n == 0){
count++;
num /= n;
}
return count;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int num2 = 0;
int num5 = 0;
for(int i = 1;i <= n;i++){
num2 += fun(i,2) * (n + 1 - i);
num5 += fun(i,5) * (n + 1 - i);
}
System.out.println(num5);
}
} public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
solve(sc.nextInt());
}
sc.close();
}
public static void solve(int n) {
int count=0;
int sum=0;
for(int i=5;i<=n;i++) {
int tmp=i;
while(tmp%5==0) {
count++;
tmp/=5;
}
sum+=count;
}
System.out.println(sum);
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(zerosOfTail(n));
}
public static int zerosOfTail(int n) {
if (n < 5) {
return 0;
}
int[] dp = new int[n+1]; // 初始化默认为0,所以dp[1]-dp[4]已经为0了
for (int i = 5; i <= n; i++) {
dp[i] = dp[i-1] + zerosOfFactorial(i);
}
return dp[n];
}
public static int zerosOfFactorial(int n) {
if (n < 5) {
return 0;
}
int result = 0;
int i = 0;
for (i = n; i >= 5; i--) {
if (i % 5 == 0) {
break;
}
}
for (; i >= 5; i -= 5) {
int temp = i;
while (temp % 5 == 0) {
result++;
temp /= 5;
}
}
return result;
}
}
n = int(input()) c = 0 for i in range(1, n+1): if i >= 5: for j in range(1, 10): c = c + i//(5**(j)) if i < (5**(j+1)): break print(c)1、对于n!来说,素因子5的个数就是n!末尾0的个数,计算公式是n/5+n/5^2 + n/5^3...
#include <bits/stdc++.h>
using namespace std;
int get_zeros(int num)
{
int res = 0;
while(num)
{
res += num/5;
num = num/5;
}
return res;
}
int main()
{
int n;
cin>>n;
if(n<5)
{
cout<<0<<endl;
return 0;
}
int nums = 0;
for(int i=5; i<=n; i++)
nums+=get_zeros(i);
cout<<nums<<endl;
return 0;
} leetcode 的原题
# Python3 --- 完全通过版
# 求n!末尾有多少个0?
def get_0_number(n):
if n<5:
return 0
else:
n //= 5
return n + get_0_number(n)
# 主函数
if __name__ == '__main__':
try:
while True:
n = int(input())
res = 0
for i in range(1,n+1):
res += get_0_number(i)
print(res)
except ValueError:
pass | #include <stdio.h> #include <stdlib.h> #include <math.h> intmain(){ intn,m; intsum = 0; intcount = 0; scanf("%ld",&n); m = n; for(intj = 0;m>=5;j++){ m = m/5; count +=1; } for(inti = 0;i <=n ; i++){ for(intk = 1 ;k <= count ;k++) { sum = sum + i /(pow(5,k)); } } printf("%ld",sum); return0; } |