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; } |