快速求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;
}
本文介绍了一种快速计算a的b次方模p的算法,并提供了两种实现方式:一种使用位操作进行优化,另一种通过循环逐步计算。这两种方法都极大地提高了大数幂运算的效率。
3104

被折叠的 条评论
为什么被折叠?



