https://zerojudge.tw/ShowProblem?problemid=a289

高中程式解題 a289

c++

#include <iostream>

int Calu_Mod_Inverse(int x, int y) {
    int t, mod = y;
    int ra = 1, rn = 0, la = 0, ln = 1, step = 1;
    while(x%y) {
        if(step) {
            ra -= x/y * la;
            rn -= x/y * ln;
        } else {
            la -= x/y * ra;
            ln -= x/y * rn;
        }
        t = x, x = y, y = t%y;
        step = 1 - step;
    }
    if(y == 1) {
        if(step)
            return (la%mod + mod)%mod;
        else
            return (ra%mod + mod)%mod;
    }
    else
        return 0;
}
int main() {
    int a, n, tmp;
    while(scanf("%d %d", &a, &n) == 2) {
        tmp = Calu_Mod_Inverse(a, n);
        if(tmp)        printf("%d\n", tmp);
        else        puts("No Inverse");
    }
    return 0;
}

results matching ""

    No results matching ""