Pagini recente » Cod sursa (job #625951) | Cod sursa (job #904968) | Cod sursa (job #2218133) | Cod sursa (job #3208225) | Cod sursa (job #1682723)
#include <iostream>
#include <fstream>
using namespace std;
struct vec {long long x, y, u;};
vec mod(vec v1, vec v2)
{
long long c = v1.u / v2.u;
vec v3;
v3.x = v1.x - c*v2.x;
v3.y = v1.y - c*v2.y;
v3.u = v1.u % v2.u;
return v3;
}
vec divizor(vec v1, vec v2)
{
vec v3;
v1.x = v2.y = 1;
v1.y = v2.x = 0;
while(v2.u > 1)
{
v3 = mod(v1,v2);
v1 = v2;
v2 = v3;
}
return v2;
}
long long inv_mod(long long k, long long n)
{
vec v1 = {1,0,k}, v2 = {0,1,n}, v3;
v3 = divizor(v1, v2);
return v3.x;
}
int main()
{
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
long long k, n;
fin >> k >> n;
fout << inv_mod(k,n);
return 0;
}