1. 我们需要求解x ^ n 问题,那么可以把n转化为二进制来进行求解
例如求解2 ^ 10 那么10转化为二进制数字为1010 对应的位上分别为 8 4 2 1
2 ^ 10 可以转化为 2 ^ 8 * 2 ^ 2
2. 具体的代码如下:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long x = sc.nextLong();
long n = sc.nextLong();
long res = ext(x, n);
System.out.println(res);
}
private static long ext(long x, long n) {
long pingFangShu = x;
long result = 1;
while(n!=0){
//遇1累乘现在的幂
if((n & 1) == 1){
result *= pingFangShu;
}
//每移位一次幂累乘方一次
pingFangShu = pingFangShu * pingFangShu;
//右移一位
n >>= 1;
}
return result;
}
}