【题目描述】
【思路】
快速幂求解。
import java.io.*;
public class Main{
//0≤a,b≤109 1≤p≤109
public static long quick_pow(long a, long b, long p){
if( b == 1) return a % p;
if( b == 0) return 1 % p;
long ans = 1;
long t = a;
while( b != 0){
//奇数则乘以a
if( (b & 1) == 1) ans = (ans * t) % p;
t = (t * t) % p; //成乘方式扩大
b = b >>1;
}
return ans % p;
}
public static void main(String args[]) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out));
String s[] = bf.readLine().split(" ");
long a = Integer.parseInt(s[0]), b = Integer.parseInt(s[1]), p= Integer.parseInt(s[2]);
long ans = quick_pow(a, b, p);
log.write(ans+"\n");
log.flush();
log.close();
bf.close();
}
}
import java.util.Scanner;
public class Main {
public static long quickPow(long a, int b, int c){
long ans = 1;
while(b > 0){
// 如果b的二进制表示最低位为1则乘上当前的a
if((b&1)==1){
ans = ans * a % c;
}
// 更新a,a依次为 a^{2^0}, a^{2^1}, a^{2^2}, ……, a^{2^logb}
a = a * a % c;
b >>= 1;
}
return ans;
}
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
for(int i = 0; i < n; i ++){
int a = reader.nextInt(), b = reader.nextInt(), c = reader.nextInt();
System.out.println(quickPow(a, b , c));
}
}
}