位运算之快速幂

来源:互联网 发布:mac 最好的五笔输入法 编辑:程序博客网 时间:2024/05/21 00:49

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

主要算法:对 整数的二进制位数 进行遍历 ,如果遍历到 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;}
0 0