Cod sursa(job #2728478)

Utilizator ArsenieArsenie Vlas Arsenie Data 23 martie 2021 12:22:35
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>
#define ll long long int
#define double long double
#define pb push_back
#define endl '\n'
#define er erase
#define sz size
#define in insert
#define mp make_pair
#define f first
#define s second
#define mod 1000000007
using namespace std;

ll a, m, x, y, g;

ll gcd(ll a, ll b, ll &x, ll &y) // extended euclidian algorithm
{
    if(b==0)
    {
        y=0;
        x=1;
        return a;
    }else{
        ll x1, y1;
        ll g=gcd(b, a%b, x1, y1);
        x=y1;
        y=x1-(a/b)*y1;
        return g;
    }
}

int32_t main(){
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    ifstream fin("inversmodular.in");
    ofstream fout("inversmodular.out");
    fin>>a>>m;
    ll g=gcd(a, m, x, y);
    if(g!=1){fout<<"No modular inverse for "<<a<<" modulo "<<m<<"."<<endl;}else{fout<<((x%m)+m)%m<<endl;}
    return 0;
}