a^b
题目来源:《算法竞赛进阶指南》
时间限制:(1000ms) 内存限制:(32mb)
题目描述
求 (a) 的 (b) 次方对 (p) 取模的值。
输入格式
三个整数 (a) , (b) , (p) ,在同一行用空格隔开。
输出格式
输出一个整数,表示 a^b mod p
的值。
数据范围
(0 ≤ a,b,p ≤ 10^9) ,
数据保证 (p≠0)
样例输入
3 2 7
样例输出
2
解题思路
这是一个快速幂模板题,直接套模板就可以了。
快速幂模板((a^b\%p)):
public static long quickPow(int a, int b, int mod) {
long ans = 1, clothCover = a;
while (b > 0) {
if ((b & 1) == 1) {
ans = ans * clothCover % mod;
}
clothCover = clothCover * clothCover % mod;
b >>= 1;
}
return ans % mod;
}
解题代码-Java
import java.util.Scanner;
public class Main {
public static long quickPow(int a, int b, int mod) {
long ans = 1, clothCover = a;
while (b > 0) {
if ((b & 1) == 1) {
ans = ans * clothCover % mod;
}
clothCover = clothCover * clothCover % mod;
b >>= 1;
}
return ans % mod;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println(quickPow(input.nextInt(), input.nextInt(), input.nextInt()));
input.close();
}
}