蓝桥杯JAVA组备赛模板1:快速幂

快速幂:

复制代码
    static long gcd(long a, long b) {
        return b == 0 ? a : gcd(b, a % b);
    }
    static long lcm(long a, long b) {
        return (a / gcd(a, b)) * b;
    }
    
    //快速幂
    static long powl(long a, int b) {
        if (a == 0)
            return 0;
        long ans = 1;
        while (b > 0) {
            if ((b & 1) > 0)
                ans *= a;
            a *= a;
            b >>= 1;
        }
        return ans;
    }

关于这些函数的解释如下:

  • gcd(long a, long b): 这个函数用于计算两个整数 ab 的最大公约数。它是通过辗转相除法(欧几里德算法)实现的。当 b 为 0 时,返回 a,否则递归调用自身,并传入 ba 除以 b 的余数。
  • lcm(long a, long b): 这个函数用于计算两个整数 ab 的最小公倍数。它利用了最大公约数的性质,即两个数的乘积等于它们的最大公约数与最小公倍数的积。因此,函数首先通过 gcd 函数计算出最大公约数,然后用 a * b / gcd(a, b) 计算最小公倍数。
  • powl(long a, int b): 这个函数是一个快速幂函数,用于计算 ab 次幂。它采用了二进制指数的思想,将指数 b 转换为二进制表示,并通过迭代的方式累乘得到结果。
相关推荐
BD_Marathon4 分钟前
【JavaWeb】Tomcat_简介
java·tomcat
⑩-5 分钟前
Java-元注解 (Meta-Annotations)
java
Meteors.5 分钟前
安卓进阶——原理机制
android·java·开发语言
是阿漂啊6 分钟前
vscode运行springboot项目
java·spring boot·后端
ghfdgbg8 分钟前
13. 配置优先级 + Bean的管理 + SpringBoot核心原理
java·spring boot·后端
Moe4889 分钟前
Elasticsearch 8.1 Java API Client 客户端使用指南(索引、文档操作篇)
java·后端·面试
洋亦10 分钟前
GoF23种设计模式 简介
java
Javatutouhouduan11 分钟前
Java面试常问Redis核心知识点整理!
java·数据库·redis·java面试·后端开发·java架构师·java程序员
AAA简单玩转程序设计11 分钟前
谁说Java枚举只是“常量装盒”?它藏着这些骚操作
java·前端
枯基Evan13 分钟前
applicationTaskExecutor Spring 内置线程池失效
java·数据库·spring