快速幂# 笔记

核心思想:每一步把指数分成两半,底数平方。 就是降指数,即减少循环次数,时间复杂度降低,结果不变。

代码改进前,改进后:

typedef long long ll;
ll f(ll a, ll b, ll c)
{
    
    
	ll ans = 1;
	a %= c;
	while (b != 0)
	{
    
    
		if (b % 2 == 1)
		{
    
    
			ans = (ans * a) % c;
		}
		b /= 2;
		a = (a * a) % c;
	}
	return ans;
}

```cpp
typedef long long ll;
ll f(ll a, ll b, ll c)
{
    
    
	ll ans = 1;
	a %= c;
	while (b != 0)
	{
    
    
		if (b&1)
		{
    
    
			ans = (ans * a) % c;
		}
		b>>=1;
		a = (a * a) % c;
	}
	return ans;
}

猜你喜欢

转载自blog.csdn.net/YYDS777/article/details/113844352