蓝桥杯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 转换为二进制表示,并通过迭代的方式累乘得到结果。
相关推荐
Sunsets_Red13 分钟前
待修改莫队与普通莫队优化
java·c++·python·学习·算法·数学建模·c#
葡萄城技术团队17 分钟前
在 Java 中优化 MySQL 查询以提升性能
java·开发语言·mysql
杀死那个蝈坦20 分钟前
短链接生成-基于布隆过滤器和唯一索引
java·数据库·微服务·oracle·rocketmq
慕白Lee20 分钟前
Java foreach在lambda的foreach遍历中退出操作(lambda foreach break)
java
winfield82123 分钟前
Java 中大量闲置 MySQL 连接的解决方案(从根因到落地)
java·mysql
moxiaoran575326 分钟前
Java开发中VO的使用
java·开发语言
计算机毕设指导626 分钟前
基于微信小程序图像识别的智能垃圾分类系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·分类·maven
LJianK133 分钟前
前后端接口常见传参
java·spring
独自破碎E34 分钟前
消息队列如何保证消息的有效性?
java·开发语言·rocketmq·java-rocketmq
38242782736 分钟前
使用 webdriver-manager配置geckodriver
java·开发语言·数据库·爬虫·python