Cod sursa(job #284140)

Utilizator ScrazyRobert Szasz Scrazy Data 21 martie 2009 08:10:43
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <cstdio>

#define ll long long

ll a, n;

void euclid(ll a, ll b, ll *x, ll *y)
{
    if (b == 0)
    {
	*x = 1;
	*y = 0;

	return ;
    } 
    ll x0, y0;
    euclid(b, a % b, &x0, &y0);

    *x = y0;
    *y = (x0 - (a / b) * y0);
}

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

    scanf("%lld %lld", &a, &n);

    ll x, y;
    euclid(a, n, &x, &y);
    while (x < 0) x += n;
    printf("%lld\n", x);

    return 0;
}