快速求a^b%p
lint mod_exp(int a,int b,int p)
{
int m=1;
while(b)
{
if(b&1) m=(a%p)*(m%p)%p;
b>>=1;
a=(a%p)*(a%p)%p;
}
return m;
}
int m=1;
while(b)
{
if(b&1) m=(a%p)*(m%p)%p;
b>>=1;
a=(a%p)*(a%p)%p;
}
return m;
}
int Bit(unsigned a, unsigned i)
{
return a>>i&1;
}
//
int XaModN(int x, unsigned a, int n)
{
int y=1;
for (unsigned i=33; i>0; i--)
{
y=y*y%n;
if (Bit(a, i-1)) y=y*x%n;
}
return y;
}