题目 2154: 取余运算

题目描述:

输入b,p,k的值,求b^p mod k的值。其中b,p,k×k为长整型数。

解题思路:

  • 如果指数为奇数,那么结果乘以当前的底数,指数除以2(整除运算)。
  • 如果指数为偶数,那么底数变为原来底数的平方,指数除以2。

代码:

分治算法

java 复制代码
package lanqiao;

import java.math.BigInteger;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long b = sc.nextInt();
        long p = sc.nextInt();
        long k = sc.nextInt();

        System.out.println(b + "^" + p + " mod " + k + "=" + f(b,p,k));

    }
    public static long f(long b,long p,long k)
    {
        long ans = 1;
        while(p > 0)
        {
            if(p % 2 == 1)
                ans = ans * b % k;
            b = b * b % k;
            p /= 2;
        }
        return ans;
    }
}
相关推荐
进击的CJR3 分钟前
redis cluster 部署
java·redis·mybatis
重生之后端学习13 分钟前
19. 删除链表的倒数第 N 个结点
java·数据结构·算法·leetcode·职场和发展
qq_124987075314 分钟前
基于小程序中医食谱推荐系统的设计(源码+论文+部署+安装)
java·spring boot·后端·微信小程序·小程序·毕业设计·计算机毕业设计
Coder_Boy_17 分钟前
基于SpringAI的在线考试系统-阅卷评分模块时序图
java·人工智能·spring boot
aini_lovee20 分钟前
严格耦合波(RCWA)方法计算麦克斯韦方程数值解的MATLAB实现
数据结构·算法·matlab
linweidong37 分钟前
C++大型系统中如何组织头文件和依赖树?
java·c++·架构
安特尼37 分钟前
推荐算法手撕集合(持续更新)
人工智能·算法·机器学习·推荐算法
橘子师兄42 分钟前
C++AI大模型接入SDK—环境搭建
开发语言·c++·人工智能
lkbhua莱克瓦2442 分钟前
JavaScript核心语法
开发语言·前端·javascript·笔记·html·ecmascript·javaweb
bubiyoushang88843 分钟前
基于MATLAB的近红外光谱与PLS方法测定药片有效成分含量的实现
开发语言·matlab