位操作的快速幂

来源:互联网 发布:地址匹配算法 编辑:程序博客网 时间:2024/05/22 00:50
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>//  计算x^22       22   =  10110    = 16+4+2//                十进制     二进制     十进制 //    按照原本的思路是a=a*a,之后是b=b/2;   也就是(16+4+2)/2//结果是(8+2+1)相当于把10110向右移1为,变成1011 ,操作为b>>=1; // // using namespace std;int main(){int a,b;while(scanf("%d%d",&a,&b)!=EOF){int r=1;while(b!=0){if(b&1)r=r*a;a=a*a;b>>=1;//比如b的二进制为1101,操作之后变为110,也就是把原二进制向右移1位 }printf("%d\n",r);//r保存结果 }return 0;}

0 0
原创粉丝点击