题目
分析
快速幂+龟速乘KO
一眼过去可以知道是个快速幂能秒的题。
然后看下数据范围P<=10^18,这会导致相乘的时候可能超long long。
于是需要龟(快)速乘来解决。
代码
import java.util.Scanner;
public class 华华数学 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
long a,b,mod;
while(t-->0) {
a=sc.nextLong();b=sc.nextLong();mod=sc.nextLong();
System.out.println(power(a%mod,b,mod));
}
}
public static long power(long a,long b,long mod) {//快速幂模板
long ans=1;
for(;b>0;b>>=1) {
if((b&1)!=0)ans=mul(ans,a,mod);
a=mul(a,a,mod);
}
return ans;
}
public static long mul(long a,long b,long mod) {//快速乘模板
long ans=0;
for(;b>0;b>>=1) {
if((b&1)!=0)ans=(ans+a)%mod;
a=a*2%mod;
}
return ans;
}
}