快速幂 教程

对于an,若n为奇数,a^(n-1)*a;
       若n为偶数,a^(n/2)*a^(n/2) ;
       若n为0, 1。 

快速幂 教程_第1张图片

 快速幂 教程_第2张图片

/*
快速幂
对于an,若n为奇数,a^(n-1)*a;
       若n为偶数,a^(n/2)*a^(n/2) ;
       若n为0, 1。 
*/
#include 

using namespace std;

int x, p, m, i,result;

int main() {
	int x,n;
	cin >> x >> n;

	result = 1 ;

	while (n!=0) {

		if (n % 2 == 1)

			result= result*x;

		n /= 2;

		x=x*x;

	}

	cout << result<< endl;

return 0;

}

你可能感兴趣的:(算法,c++)