Cod sursa(job #699770)
Utilizator | Data | 29 februarie 2012 21:15:53 | |
---|---|---|---|
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, InvMod, Aux;
inline void EE( ll &X, ll &Y, ll A, ll B )
{
if( !B )
{
X = 1, Y = 0;
return;
}
EE( X, Y, B, A%B );
ll aux = X;
X = Y;
Y = aux - (A/B)*Y;
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
scanf("%lld%lld", &A, &N );
EE( InvMod, Aux, A, N );
while( InvMod < 0 )
InvMod += N;
printf("%lld\n", InvMod );
return 0;
}