题目 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;
    }
}
相关推荐
spcier5 小时前
图论拓扑排序-Kahn 算法
算法·图论
知星小度S5 小时前
动态规划(一)——思想入门
算法·动态规划
ysa0510305 小时前
动态规划-逆向
c++·笔记·算法
燃于AC之乐5 小时前
我的算法修炼之路--7—— 手撕多重背包、贪心+差分,DFS,从数学建模到路径DP
c++·算法·数学建模·深度优先·动态规划(多重背包)·贪心 + 差分
Whisper_Sy5 小时前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 网络状态实现
android·java·开发语言·javascript·网络·flutter·php
chinesegf5 小时前
文本嵌入模型的比较(一)
人工智能·算法·机器学习
乂爻yiyao5 小时前
1.1 JVM 内存区域划分
java·jvm
Bony-5 小时前
Go语言垃圾回收机制详解与图解
开发语言·后端·golang
hmywillstronger5 小时前
【Rhino】【Python】 查询指定字段并cloud标注
开发语言·python
新缸中之脑5 小时前
Weave.js:开源实时白板库
开发语言·javascript·开源