本文主要是介绍基本算法-位运算【竞赛题】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
求 a 的 b 次方对 p 取模的值,其中 0≤a,b,p≤10^9 ,p>0
输入描述:三个用空格隔开的整数a,b和p。
输出描述:一个整数,表示a^b mod p的值。
示例1
输入:2 3 9
输出:8
import java.util.Scanner;/*** 功能:a^b mod p** @author * @since 2024/1/3*/
public class Main {public static void main(String[] args) {int a = 0;int b = 0;int c = 0;Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextInt()) { // 注意 while 处理多个 casea = in.nextInt();b = in.nextInt();c = in.nextInt();}long result = cal(a, b, c);System.out.print(result);}private static long cal(long a, long b, long p) {long ans = 1 % p;while (b != 0) {if ((b & 1) != 0) {ans = ans * a % p;}a = a * a % p;b >>= 1;}return ans;}
}
这篇关于基本算法-位运算【竞赛题】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!