位运算之快速幂

快速幂:利用二进制 对数据幂运算的一种高效算法

主要算法:对 整数的二进制位数 进行遍历 ,如果遍历到 1 临时值把结果乘上,如果遍历到 0,用临时变量跳过

举个例子:3的二进制是 11 最后一位为 1 , 进行 临时值与返回值 相乘,返回值为 3 ,临时值进行自乘运算 为 9,之后 N>>=1
右移一位 然后为第一位的 1 再次进行 临时值 与返回值 相乘 ,返回值 为3*9 =27,之后 ans自乘为 81,之后 N右移,循环结束

样例如下:
位运算之快速幂_第1张图片

代码如下:

#include 
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;
}

你可能感兴趣的:(C,Algorithm)