发现有大量的模逆

问题描述 投票:1回答:1

给定一个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。

对于

c++ math sum largenumber modular-arithmetic
1个回答
-1
投票

我们必须找到一个值x使得(QX)%MOD = 1。这意味着(Q%镆铘%MOD)MOD%= 1的分母这意味着,你可以找到答疑MOD即(N ^ R)%MOD使用模幂。然后更换Q Q%MOD”。这意味着(Q'* X)MOD = 1。所以发现对于Q模逆”。 (MOD = 1000000007)

© www.soinside.com 2019 - 2024. All rights reserved.