我想解决一个关于SPOJ需要模幂运算的问题。我现在用的是下面的C代码如何避免快速模幂溢出
long long modpow(long long a,long long b,long long mod)
{
long long product,pseq;
product=1
pseq=a%mod;
while(b>0)
{
if(b&1)
product=(product*pseq)%mod;
pseq=(pseq*pseq)%mod;
b>>=1
}
return product;
}
问题是,当我想计算(2^249999999997)%999999999989
,它给了回答0
因为溢出。我怎样才能避免溢出?
我不认为它是可以避免的,除非你彻底改变了实现。 – 0decimal0
更好的使用大数字库,像gmp libmp ... – mathk
int64 * int64的结果需要int128 – BLUEPIXY