标签:返回 block 参数 相对 查询 include pac ++ 上网
- 快速幂乘法相对于普通的乘法有很大的时间复杂度优化,其原因是基于位运算的一种算法,空间复杂度能够减少到O( log N )级别。而普通的乘法,则是O( N ) 级别。
下面来看一下代码:
#include<iostream>
using namespace std;
typedef long long ll;
ll Quick_Multi(ll a, ll b);
int main()
{
ll a, b;//a的b次幂
cout << "请输入a的几次方(a^b)" << endl;
cin >> a >> b;
cout << Quick_Multi(a, b) << endl;
return 0;
}
ll Quick_Multi(ll a, ll b)
{
ll ans = 1;
if (!a)//判断a是否为零,如若是0,返回0
return a;
while (b)
{
if (b & 1)//进行与一操作
ans *= a;
a *= a;
b >>= 1;//b向右移以为
}
return ans;
}
在一般的思路中,好比方我们求 2^7,那么普通的乘法就是 2 * 2 * 2 * 2 * 2 * 2 * 2 求了七次,而是用快速幂乘法,那么也就有了(2 * 2 * 2 ) * ( 2 * 2 * 2 ) * 2 =( ( 2 * 2 * 2 ) ^ 2 ) * 2,另外一个角度去看,乘了3次乘法运算。也就是说,我们把需要乘七次的乘法降低到了成三次。这就是快速幂乘法的意义。
标签:返回 block 参数 相对 查询 include pac ++ 上网
原文地址:https://www.cnblogs.com/Yunrui-blogs/p/11082202.html