2022蓝桥杯大赛软件类省赛Java大学B组E题 求阶乘-CSDN博客

简介: 2022蓝桥杯大赛软件类省赛Java大学B组E题 求阶乘-CSDN博客


import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        long n= sc.nextLong();
        //设置双指针
        long i=1;
        long j=Long.MAX_VALUE;
        //标准二分查找法 时间复杂度为log2n
        while(i<j){
            //位运算符防止溢出
            long m=(i+j)>>>1;
            if(n<=judge(m))
                j=m;//右指针左移
            else i=m+1;//左指针右移
        }
        if(judge(j)==n) System.out.println(j);
        else System.out.println("-1");
    }
    public static long judge(long n){
        //寻找n的阶乘中0后缀的数量
        long cnt=0;
        /*
        * 寻找阶乘后有多少个0 2*5为0
        * 看拆分为多个个5
        * 就是多少个0
        * 25可以拆成5*5
        * 所以要对n一直除5
        * */
        while(n>0){
            cnt+=n/5;
            n/=5;
        }
        return cnt;
    }
}
目录
相关文章
|
4天前
|
Java
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
20 4
|
2天前
|
Java 关系型数据库 开发者
Java编程设计原则:构建稳健、可维护的软件基石
Java编程设计原则:构建稳健、可维护的软件基石
|
4天前
|
Java
2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
6 1
|
4天前
|
存储 前端开发 算法
2016届蓝桥杯大赛软件类国赛Java大学B组 反幻方 暴力搜索
2016届蓝桥杯大赛软件类国赛Java大学B组 反幻方 暴力搜索
4 0
|
3天前
|
Java 机器人 程序员
Java中的线程通信:wait、notify与Condition详解
Java中的线程通信:wait、notify与Condition详解
|
3天前
|
存储 安全 Java
Java中的线程安全与同步技术
Java中的线程安全与同步技术
|
1天前
|
监控 Java 调度
Java并发编程:深入理解线程池
【6月更文挑战第26天】在Java并发编程的世界中,线程池是提升应用性能、优化资源管理的关键组件。本文将深入探讨线程池的内部机制,从核心概念到实际应用,揭示如何有效利用线程池来处理并发任务,同时避免常见的陷阱和错误实践。通过实例分析,我们将了解线程池配置的策略和对性能的影响,以及如何监控和维护线程池的健康状况。
7 1
|
1天前
|
存储 缓存 Java
老程序员分享:Java并发编程:线程池的使用
老程序员分享:Java并发编程:线程池的使用
|
1天前
|
Java 数据库连接 调度
Java多线程,对锁机制的进一步分析
Java多线程,对锁机制的进一步分析
|
1天前
|
Java
Java多线程notifyAll()方法
Java多线程notifyAll()方法