【模板】快速幂/快速乘

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38083668/article/details/83064584

快速幂:

inline int ksm(int a,int b,int mod)
{
	int ans=1;
	a%=mod;
	while(b)
	{
	  if(b&1) ans=ksc(ans,a,mod);
	  b>>=1;
	  a=ksc(a,a,mod);
	}
	return ans;
}

快速乘(O(logN)):

inline int ksc(int a,int b,int mod)
{
	int ans=0;
	a%=mod;
	while(b)
	{
	  if(b&1) ans=(ans+a)%mod;
	  b>>=1;
	  a=(a+a)%mod;
	}
	return ans;
}

快速乘(O(1)):

inline int mul(int a,int b)
{
    return (a*b-(int)((long double)a/mod*b)*mod+mod)%mod;
}

猜你喜欢

转载自blog.csdn.net/m0_38083668/article/details/83064584