码迷,mamicode.com
首页 > 编程语言 > 详细

快速幂算法

时间:2016-08-26 21:21:52      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

快速幂就是快速算出某个数的多少次幂a^b

普通方法O(n)不解释:

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstdlib>
 5 #include<iomanip>
 6 #include<algorithm>
 7 using namespace std;
 8 int main()
 9 {
10     int a=10,b=5,m;
11     m=a;
12     a=1;
13     while(b>0)
14     {
15         if(b&1)a=a*m;
16         b>>=1;
17         m=m*m;
18     }
19     cout<<a;
20     return 0;
21 }
View Code

 

快速幂O(log?N):

把b转化成二进制

例如: 10的而二进制为1010

并且10=2^1+2^3

因此a^10=a^(2^1)*a^(2^3) 代码:

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstdlib>
 5 #include<iomanip>
 6 #include<algorithm>
 7 using namespace std;
 8 int main()
 9 {
10     int a=10,b=5,m;
11     m=a;
12     a=1;
13     while(b>0)
14     {
15         if(b&1)a=a*m;
16         b>>=1;
17         m=m*m;
18     }
19     cout<<a;
20     return 0;
21 }
View Code

 

快速幂算法

标签:

原文地址:http://www.cnblogs.com/wzq1-blogs/p/5811585.html

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