**求a^b%p**
如果不理解快速幂板子,请看大佬的理解
1.b不是很大,直接用快速幂板子来写即可
**快速幂板子**
ll quickpow(ll x,ll y ll z)
{
//x^y%z
ll ans=1;
while(y)
{
if(y&1)
ans=ans*x%z;
x=x*x%z;
y>>=1;
}
return ans;
}
2.b很大,long long都存不下,就不能直接快速幂了,首先必须让b变小,需要对b取模,但不能直接让b对p取模,这里需对p运用欧拉函数板子改变p的值得rea,然后(b%rea+rea),从而缩小b的值,想要了解为什么,找一些大佬对欧拉函数的详解吧。这里说一下b一般存的是字符串,因此可以一位一位的进行取模,最终改变b的值。b的值缩小之后再次使用快速幂进行求解
a^b%c==a^(b%rea+rea)%c,其中rea为c的欧拉函数
**欧拉函数