Pagini recente » Romanian IOI Medalists: Careers | Cod sursa (job #2549662) | Cod sursa (job #1220227) | Cod sursa (job #650953) | Cod sursa (job #1456382)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("inversmodular.in") ;
ofstream fout ("inversmodular.out") ;
long long A , N ;
void Citire ()
{
fin >> A >> N ;
}
long long InvMod ( long long A , long long N ) // A*X - B*N = 1 mod N ,,, aflu X ;
{
long long x_0 = 1 , y_0 = 0 , x_1 = 0 , y_1 = 1 , rest , cat , x_r , y_r , copie = N ;
while ( A != 0 )
{
rest = N % A ;
cat = N / A ;
N = A ;
A = rest ;
x_r = x_0 - cat * x_1 ;
y_r = y_0 - cat * y_1 ;
x_0 = x_1 ;
y_0 = y_1 ;
x_1 = x_r ;
y_1 = y_r ;
}
// while ( x_0 < 0 )
// x_0 += copie ;
while ( y_0 < 0 )
y_0 += copie ;
return y_0 ;
}
int main()
{
Citire () ;
fout << InvMod ( A,N ) ;
return 0;
}