题目 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;
    }
}
相关推荐
爱跑步的程序员~2 分钟前
SpringBoot集成SpringAI与Ollama本地大模型
java·后端·spring·ai·llama·springai
Bear on Toilet6 分钟前
递归_二叉树_49 . 路径综合Ⅲ
数据结构·算法·前缀和·深度优先·递归
Grandpa_Rick8 分钟前
Join Module: Iteration #6 Nested Join
java
CHANG_THE_WORLD10 分钟前
深入指针3 - 完全精讲版
数据结构·算法
im_AMBER10 分钟前
Leetcode 124 二叉搜索树的最小绝对差 | 二叉树的锯齿形层序遍历
数据结构·学习·算法·leetcode·二叉树
m0_5312371712 分钟前
C语言-static关键词,寄存器变量,define宏定义
c语言·开发语言
Y‍waiX‍‍‮‪‎⁠‌‫‎‌‫‬12 分钟前
CentOS7安装多版本jdk并切换jdk版本
java·jdk·centos
ADDDDDD_Trouvaille14 分钟前
2026.2.14——OJ78-82题
c++·算法
疯狂敲代码的老刘16 分钟前
MyBatis Generator GUI 下载安装教程 可视化MyBatis代码生成
java·mybatis·mybatis-ui
Hag_2016 分钟前
LeetCode Hot100 560.和为K的子数组
数据结构·算法·leetcode