Cod sursa(job #3134577)

Utilizator VladNANegoita Vlad-Andrei VladNA Data 29 mai 2023 17:30:06
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("sse,avx,fma,avx2,bmi,bmi2,lzcnt,popcnt")

using namespace std;
using ll = long long;

/* a*x + b*y = 1 ---> {x, y} */
pair<ll, ll> euclid(int a, int b) {
	if (b == 0)
		return {1, 0};

	pair<ll, ll> p = euclid(b, a % b);
	return {p.second, p.first - (a / b) * p.second};
}

void solve()
{
	int a, b;
	cin >> a >> b;

	pair<ll, ll> p = euclid(a, b);

	cout << (p.first + b * 1LL * INT_MAX) % b << '\n';
}

int main()
{
    freopen("inversmodular.in", "r", stdin);
    freopen("inversmodular.out", "w", stdout);

	// #ifndef ONLINE_JUDGE
    // freopen("input.in", "r", stdin);
    // freopen("output.out", "w", stdout);
    // #endif

	int t = 1;
	// cin >> t;
	while(t--)
		solve();

	return 0;
}