Cod sursa(job #1558192)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 28 decembrie 2015 20:11:04
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
long long r,d;
struct sp
{
    long long x,y;
};
sp euclid(long long a,long long b)
{
    sp ans,tm;
    long long c;
    if(b!=0)
    {
    c=a/b;
    tm=euclid(b,a%b);
    ans.x=tm.y;
    ans.y=tm.x-tm.y*c;
    return ans;
    }
    else
    {
        ans.x=1;
        ans.y=0;
        d=a;
        return ans;
    }
}
int main()
{
    freopen("inversmodular.in","r",stdin);
    freopen("inversmodular.out","w",stdout);
    long long t,q,a,b,r;
    sp ans;
    r=1;
    cin>>a>>b;
    if(b<a)
    ans=euclid(a,b);
    else
    ans=euclid(b,a);
    if(r%d!=0)
    printf("0 0\n");//never gunna happen
    else
    if(b<a)
    cout<<(ans.x%b+b)%b<<"\n";
    else
    cout<<(ans.y%b+b)%b<<"\n";
    return 0;
}