HDU 1576 - A/B (模除法 + 求逆元)

思路

乘以逆元

代码

void Extend_Gcd(LL a, LL b, LL &g, LL &x, LL &y)
{
    if (!b) g = a, x = 1, y = 0;
    else { Extend_Gcd(b, a%b, g, y, x); y -= x * (a/b); }
}
 
LL inv(LL a, LL n)
{
    LL d, x, y;
    Extend_Gcd(a, n, d, x, y);
    return d == 1 ? (x+n)%n : -1;
}
 
int main()
{
    int T;
    cin >> T;
    while (T--)
    {
        LL a, b;
        cin >> a >> b;
        cout << (a*inv(b, 9973)) % 9973 << endl;
    }
    return 0;
}

Powered by Jekyll and Theme by solid