给定一个GP总和(1 - ((N-1)/ N)^ R)= P / Q,如何计算此P / Q分数当r大且输出功率(P * Q ^( - 1))%1000000007其中Q ^( - 1)是Q模1000000007的模逆
我可以计算(N-1)^ R和n ^ R采用模幂,然后打印P * C 1-4( - 1)通过采用模块化的逆公式使用费马小定理,而是因为我认为这是不正确的(N ^ R )模逆不相同为Q ^( - 1)和,如果我不使用幂乘剩余计算e它甚至长长溢出在C ++中。所以,请指导我什么,我做错了什么?
ll modInverse(ll a, ll m)
{
ll ans = power(a, m-2, m); //for finding modular inverse
return ans;
}
ll power(ll x, ll y, ll p)
{
ll res = 1;
x = x % p;
while (y > 0) // ll is long long
{ //p=1000000007;
if (y & 1) //for calculating n^r and (n-1)^r
res = (res*x) % p;
y = y>>1;
x = (x*x) % p;
}
return res;
}
计算P * C 1-4( - 1)%1000000007是给意想不到的答案,因为溢出的大值,如果溢出,使用国防部1000000007给人错误的价值观受到限制。我用费马小定理来计算模逆以及快速功率的方法来评估ñ^ R。
对于
我们必须找到一个值x使得(QX)%MOD = 1。这意味着(Q%镆铘%MOD)MOD%= 1的分母这意味着,你可以找到答疑MOD即(N ^ R)%MOD使用模幂。然后更换Q Q%MOD”。这意味着(Q'* X)MOD = 1。所以发现对于Q模逆”。 (MOD = 1000000007)