Cod sursa(job #1901589)
Utilizator | Puscasu Alexandru alex2kameboss | Data | 4 martie 2017 09:46:15 |
---|---|---|---|
Problema | Invers modular | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <iostream>
#include <cstdio>
using namespace std;
long long invers(int a, int m)
{
int m0=m, t, q;
int x0=0, x1=1;
if (m==1)
return 0;
while (a>1)
{
q=a/m;
t=m;
m=a%m, a=t;
t=x0;
x0=x1-q*x0;
x1=t;
}
if (x1 < 0)
x1 += m0;
return x1;
}
int main()
{
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
int a,m;
scanf("%d %d", &a, &m);
cout<<invers(a,m);
return 0;
}