快速幂

递归快速幂

image-20240218135450206

//递归快速幂 
ll qpow(int a,int n) {
	if(n == 0) {
		return 1;	
	}
	else if (n%2 == 1) {
		return qpow(a,n-1) * a;
	}else {
		long long temp = qpow(a,n/2);
		return temp*temp;
	}
	
}

非递归快速幂

ll quick_pow(int a,int n) {
    int res = 1;
    while(n) {
        if(n & 1 == 1) {
            res*=a;
        }
        n>>=1;
        a*=a;
    }
    return res;
}