Cod sursa(job #1781604)

Utilizator sulzandreiandrei sulzandrei Data 17 octombrie 2016 01:00:12
Problema Invers modular Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
//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<<n+get<1>(dxy)%n;
}
int main()
{
    solvec();
}