Cod sursa(job #271357)
| Utilizator | Data | 5 martie 2009 10:40:28 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include<stdio.h>
void euclid(int a,int b,long long &x,long long &y)
{if(b==0)
{
x=1;
y=0;
}
else
{long long x0,y0;
euclid(b,a%b,x,y);
long long tmp=x;
x=y;
y=tmp-(a/b)*y;
}
}
int main()
{freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
int x,y;
long long a=0,b,c=1;
scanf("%d %d",&x,&y);
euclid(x,y,a,b);
if(a<=0)
a=y+a%y;
printf("%d ",a);
fclose(stdout);
fclose(stdin);
return 0;
}
