Cod sursa(job #3296918)

Utilizator mcrg05Craciunescu Mihnea Gabriel mcrg05 Data 18 mai 2025 16:16:37
Problema Invers modular Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include<bits/stdc++.h>
using namespace std;

uint64_t gcd(uint64_t a, uint64_t b, int64_t &x, int64_t &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    
    int64_t x1, y1;
    uint64_t d = gcd(b, a % b, x1, y1);
    
    x = y1;
    y = x1 - y1 * (a / b);
    
    return d;
}

uint64_t solve(uint64_t a, uint64_t n) {
    int64_t x, y;

    uint64_t g = gcd(a, n, x, y);

    if (g != 1) {
        return -1;
    }

    x = (x % n + n) % n;
    
    return x;
}

int main(){
    freopen("inversmodular.in", "r", stdin);
    freopen("inversmodular.out", "w", stdout);
    
    uint64_t A, N;
    cin >> A >> N;
    
    uint64_t rezultat = solve(A, N);
    cout << rezultat << '\n';
    
    return 0;
}