Cod sursa(job #976070)

Utilizator andrettiAndretti Naiden andretti Data 22 iulie 2013 14:52:30
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
using namespace std;
typedef long long ll;
int a,n;
ll x,y;

void read()
{
    scanf("%d%d",&a,&n);
}
void gcd(int a,int b,ll &x,ll &y)
{
    if(b==0) {x=1; y=0; return;}
    ll x0,y0;
    gcd(b,a%b,x0,y0);
    x=y0;
    y=x0-(a/b)*y0;
}

void solve()
{
    gcd(a,n,x,y);
    while(x<=0) x+=n;
    printf("%lld",x);
}

int main()
{
    freopen("inversmodular.in","r",stdin);
    freopen("inversmodular.out","w",stdout);

    read();
    solve();

    fclose(stdin);
    fclose(stdout);
    return 0;
}