c=0;//c是指数的部分结果,终值为指数m
d=1;//d是中间结果,终值为所求结果
for(int i=k;i>=0;i--)
{
c=2*c;
d=(d*d)mod n;
if(bi==1)
{
c=c+1;
d=(d*a)mod n;
}
}
return d;
LL QuickPower(LL x,LL y)
{
LL re;
for(re=1;y;y=y/2,x=x*x%md)
if(y&1) re=re*x%md;
return re;
}