Cod sursa(job #1442226)

Utilizator BogdanisarBurcea Bogdan Madalin Bogdanisar Data 24 mai 2015 19:04:24
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cstring>

#define ull unsigned long long
#define ll long long
#define FOR(a,b,c) for (int a=b;a<=c; ++a)
#define ROF(a,b,c) for (int a=b;a>=c; --a)

using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
ll A,N;

void euclid(ll,ll,ll*,ll*);

int main()
{
    f>>A>>N;
    ll x,y;
    euclid(A,N,&x,&y);
    while (x<=0)
        x+=N;
    g<<x;
    f.close();g.close();
    return 0;
}

void euclid(ll a,ll b,ll* x,ll* y)
{
    if (b==0)
    {
        *x=1;
        *y=0;
    }
    else
    {
        ll x0,y0;
        euclid(b,a%b,&x0,&y0);
        *x=y0;
        *y=x0-y0*(a/b);
    }
}