如果更快的求一個整數(shù)k的n次方。如果兩個整數(shù)相乘并得到結(jié)果的時間復(fù)雜度為O(1)所坯,得到整數(shù)k的N次方的過程請實(shí)現(xiàn)時間復(fù)雜度為O(logN)的方法污呼。
給定k和n,請返回k的n次方包竹,為了防止溢出,請返回結(jié)果Mod 1000000007的值籍凝。
測試樣例:
2,3
返回:8
public int getPower(int k, int N) {
return (int)myGetPower((long)k,(long)N);
}
private long myGetPower(long base,long exp){
if(exp==0)return 1;
if(exp%2==0)return myGetPower((base*base)%1000000007,exp/2)%1000000007;
else return base*myGetPower((base*base)%1000000007,exp/2)%1000000007;
}