快速幂:利用二进制 对数据幂运算的一种高效算法
主要算法:对 整数的二进制位数 进行遍历 ,如果遍历到 1 临时值把结果乘上,如果遍历到 0,用临时变量跳过
举个例子:3的二进制是 11 最后一位为 1 , 进行 临时值与返回值 相乘,返回值为 3 ,临时值进行自乘运算 为 9,之后 N>>=1
右移一位 然后为第一位的 1 再次进行 临时值 与返回值 相乘 ,返回值 为3*9 =27,之后 ans自乘为 81,之后 N右移,循环结束
样例如下:
代码如下:
#include <bits/stdc++.h>
using namespace std;
int Count(int N){
int A=1;
int Ans=N;//注意 如果数太大,int 型会溢出
while(N){
if(N&1)
A*=Ans;
Ans*=Ans;//注意每一次遍历,临时值 一直进行 自乘运算,为 N的下一位二进制 做好辅助
N>>=1;
}
return A;
}
int main(){
int N;
scanf("%d",&N);
int V=Count(N);
printf("%d\n",V);
return 0;
}