在用Math.pow(,)进行求幂时易产生误差(int float),,,把b转化为二进制,进行求幂,此代码为求a的b次幂
膜拜大佬的板子好开心QWQ
package 基本算法;
import java.util.Scanner;
public class 快速幂 {
static long mod=(long) (1e7+9);
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
long cal=pow(a,b);
System.out.println(cal);
}
private static long pow(int a, int b) {
// TODO Auto-generated method stub
long ans=1;
long t=a;
while(b!=0) {
if((b&1)!=0) {
ans*=t;
ans%=mod;
}
b>>=1;
t*=t; //千万不要忘了这一步
t%=mod;
}
return ans;
}
}