Cod sursa(job #228582)
| Utilizator | Data | 7 decembrie 2008 15:42:40 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 0 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.67 kb |
#include <stdio.h>
int A, N;
void euclid_extins(long long &x, long long &y, int a, int b)
{
if (!b) x=1, y=0;
else
{
euclid_extins(x, y, b, a % b);
long long t=x;
x=y;
y=t - y*(a/b);
}
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
long long a=0,b;
scanf("%d %d", &A, &N);
euclid_extins(a, b, A, N);
if (a <= 0) a = N + a%N;
printf("%lld\n", a);
return 0;
}
