Pagini recente » Cod sursa (job #891258) | Cod sursa (job #2197636) | Cod sursa (job #2100272) | Cod sursa (job #2285722) | Cod sursa (job #2728478)
#include <bits/stdc++.h>
#define ll long long int
#define double long double
#define pb push_back
#define endl '\n'
#define er erase
#define sz size
#define in insert
#define mp make_pair
#define f first
#define s second
#define mod 1000000007
using namespace std;
ll a, m, x, y, g;
ll gcd(ll a, ll b, ll &x, ll &y) // extended euclidian algorithm
{
if(b==0)
{
y=0;
x=1;
return a;
}else{
ll x1, y1;
ll g=gcd(b, a%b, x1, y1);
x=y1;
y=x1-(a/b)*y1;
return g;
}
}
int32_t main(){
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
fin>>a>>m;
ll g=gcd(a, m, x, y);
if(g!=1){fout<<"No modular inverse for "<<a<<" modulo "<<m<<"."<<endl;}else{fout<<((x%m)+m)%m<<endl;}
return 0;
}