Pagini recente » Atasamentele paginii Clasament simulareoji_2007_11-12 | Cod sursa (job #118230) | Istoria paginii runda/matrice | Diferente pentru olimpici intre reviziile 180 si 171 | Cod sursa (job #1220538)
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <fstream>
#include <map>
using namespace std;
#define MAX 1000001
void gcd(long long &x, long long &y, long long &d, long long a, long long b) {
if (b == 0) {
d = a;
x = 1;
y = 0;
return;
}
long long x0, y0;
gcd(x0, y0, d, b, a%b);
x = y0;
y = x0 - (a/b) * y0;
}
int main() {
long long a, b, d, x, y;
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
cin >> a >> b;
gcd(x,y,d,a,b);
if (x < 0) {
x += ((-x)/b + 1) * b;
}
cout << x << endl;
return 0;
}