我正在尝试解决需要模幂运算的 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如何避免溢出?