Pagini recente » Cod sursa (job #2374644) | Cod sursa (job #1221767) | Istoria paginii runda/sim_oni_2010_ziua1 | Cod sursa (job #76115) | Cod sursa (job #1676387)
#include <iostream>
#include <fstream>
#define DIM 25
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
int a,n;
char buff[DIM];
int poz = 0;
void Read(int &a)
{
while(!isdigit(buff[poz]))
if(++poz==DIM)
in.read(buff,DIM),poz = 0;
a = 0;
while(isdigit(buff[poz]))
{
a = a*10 + buff[poz]-'0';
if(++poz==DIM)
in.read(buff,DIM),poz = 0;
}
}
int euler(int a,int b,int &x,int &y)
{
if(b==0)
{
x = 1;
y = 0;
return a;
}
else
{
int d,x0,y0;
d = euler(b,a%b,x0,y0);
x = y0;
y = x0 - (a/b)* y0;
return d;
}
}
int main()
{
Read(a);
Read(n);
in.close();
int x,y;
int d = euler(a,n,x,y);
x*=d;
y*=d;
if(x<0)
x = n+x%n;
out<<x<<"\n";
out.close();
return 0;
}