import java.util.Scanner;
public class P1226_模板快速幂_Long {
static long p;
public static long fastPow(long a, long n) { // a^n
// 注意【步步取模】!!!!
if (n == 0) {
return 1;
} else if (n % 2 == 1) { // 奇数,降一次幂
return fastPow(a, n - 1) * a % p;
} else { // 偶数,55分治
long t = fastPow(a, n / 2) % p;
return t * t % p;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
p = sc.nextLong();
long res = fastPow(a, b);
res %= p;
System.out.println(a + "^" + b + " mod " + p + "=" + res);
}
}
关于【快速幂】:
n==0:返回1
n为奇数:降一次幂,乘上自己,递归
n为偶数:55分治,(要注意,用临时变量存储,降低复杂度)