模取幂运算 计算a^b mod n

结合快速幂求a^b%n问题

以及如下公式

a^b % n = (a%n)^b % n

(a * b)%n = ( (a%n)*(b%n) ) % n


#include 
using namespace std;
#define ll long long 
ll ksm(ll a,ll b,ll n)
{
	ll ans = 1;
	ll t = a%n; // a^b % n = (a%n)^b % n 
	while(b)
	{
		if(b&1)
			ans = (ans * t)%n ;
		t = (t*t)%n;
		b >>=1;
	}
	return ans;
}
int main() 
{
	cout << ksm(2,7,7) <

你可能感兴趣的:(algorithm)