Pagini recente » Cod sursa (job #1207513) | Cod sursa (job #2709072) | Cod sursa (job #1449509)
#include <fstream>
#include <tuple>
#include <utility>
using namespace std;
using num = long long;
// ax + by = g
// ax - (a/b)bx + by + (a/b)bx = g
// (a - (a/b)b)x + b(y + (a/b)x) = g
tuple<num, num> euclid_extins(num a, num b){
if(b == 0){
return make_tuple(1, 0); }
else{
num x1, y1;
tie(y1, x1) = euclid_extins(b, a%b);
return make_tuple(x1, y1 - (a/b) * x1); } }
int main(){
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
num a, b;
f >> a >> b;
g << get<0>(euclid_extins(a, -b));
return 0; }