码迷,mamicode.com
首页 > 其他好文 > 详细

关于快速幂

时间:2018-09-04 19:11:56      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:pre   拆分   space   cout   cin   main   ace   amp   pop   

用位运算将幂指数转化成二进制,幂指数二进制展开,再将幂运算按指数的二进制拆分开来计算,这样便减少了运算的次数。(我TM在说什么)

#include<iostream>
#include<queue>
using namespace std;
queue<int> code;
int main()
{
    int a,b;
    cin>>a;
    cin>>b;
//二进制转化,存在队列中
while(a) { int num; num=a&1; cout<<num<<endl; code.push(num); a=a>>1; } int flag=b; int lenth=code.size(); int result=1; for(int i=0;i<lenth;i++) { if(code.front()) result*=flag; code.pop(); flag*=flag; } cout<<result<<endl; }

 

关于快速幂

标签:pre   拆分   space   cout   cin   main   ace   amp   pop   

原文地址:https://www.cnblogs.com/a-night/p/9585964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!