Pagini recente » Cod sursa (job #2980061) | Cod sursa (job #3152499) | Cod sursa (job #1868676) | Cod sursa (job #2503434) | Cod sursa (job #1781602)
//http://www.infoarena.ro/problema/inversmodular
#include <iostream>
#include <fstream>
#include <vector>
#include <tuple>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
#define llu unsigned long long int
llu a,n,p,re = 1;
tuple<int,int,int> extendedEuclid(int a, int b)
{
if (b == 0)
return std::make_tuple(a,1,0);
tuple<int,int,int> dxyp = extendedEuclid(b,a%b);
int xp = get<1>(dxyp);
int yp = get<2>(dxyp);
int dp = get<0>(dxyp);
return std::make_tuple(dp,yp,xp- (a/b)*yp);
}
void solvec()
{
in >> a >> n;
tuple<int,int,int> dxy = extendedEuclid(a,n);
out<<get<1>(dxy);
}
int main()
{
solvec();
}