十三届蓝桥杯JavaB组:求阶乘

题目描述

满足 N! 的末尾恰好有 K 个 0 的最小的 N 是多少? 如果这样的 N 不存在输出 −1。

输入格式

一个整数 K。

输出格式

一个整数代表答案。

样例输入

2

样例输出

10

提示

对于 30% 的数据,1 ≤ K ≤ 106 .

对于 100% 的数据,1 ≤ K ≤ 1018 .

代码:

import java.util.Scanner;
public class Main {
          
   
	public static void main(String[] args) {
          
   
		Scanner sc = new Scanner(System.in);
		long k = sc.nextLong();
		for(long i = k*4/5*5;i<=k*5;i+=5) {
          
   
			long n = getZero(i);
			if(n == k){
          
   
				System.out.println(i);
				return;
			}else if(n > k) {
          
   
				System.out.println(-1);
				return;
			}
		}
		System.out.println(-1);
	}
	static long getZero(long num){
          
   
		long n = 0;
		while(num > 0) {
          
   
			num /= 5;
			n+=num;
		}
		return n;
	}
}
经验分享 程序员 微信小程序 职场和发展