题目 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 分钟前
零售多门店库存调拨优化:需求预测与路径规划的技术实现
java·开发语言·零售
努力学算法的蒟蒻3 分钟前
day84(2.13)——leetcode面试经典150
算法·leetcode·面试
前路不黑暗@4 分钟前
Java项目:Java脚手架项目的意义和环境搭建(一)
java·开发语言·spring boot·学习·spring cloud·maven·idea
@––––––4 分钟前
力扣hot100—系列8-回溯算法
javascript·算法·leetcode
!停6 分钟前
数据结构二叉树—堆(2)&链式结构(上)
数据结构·算法
光泽雨9 分钟前
C#库文件调用逻辑
开发语言·c#
C++ 老炮儿的技术栈11 分钟前
万物皆文件:Linux 抽象哲学的开发之美
c语言·开发语言·c++·qt·算法
im_AMBER11 分钟前
Leetcode 120 求根节点到叶节点数字之和 | 完全二叉树的节点个数
数据结构·学习·算法·leetcode·二叉树·深度优先
Seven9713 分钟前
LockSupport深度解析:线程阻塞与唤醒的底层实现原理
java
1027lonikitave14 分钟前
FFTW的expr.ml怎么起作用
算法·哈希算法