Cod sursa(job #1901584)
Utilizator | Data | 4 martie 2017 09:42:18 | |
---|---|---|---|
Problema | Invers modular | Scor | 50 |
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)
{
long long y0=0, y1=1,y;
long long aux=m;
long long r,c;
while(a!=0)
{
r=m%a;
c=m/a;
m=a;
a=r;
y=y0-c*y1;
y0=y1;
y1=y;
}
if(y0<0)
return m+y0%m;
return y0;
}
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;
}