Cod sursa(job #1503595)
| Utilizator | Data | 16 octombrie 2015 15:58:59 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.65 kb |
#include <iostream>
#include <fstream>
using namespace std;
int euclid(int a, int b){
int temp;
temp=a%b;
a=b;
b=temp;
if(b==0)
if(a==1) return true;
else return false;
if(b!=0) euclid(a,b);
}
int solve(int x , int y){
int i,nr=1,k=1;
if(x%y==0 || y%x==0)
return -1;
else{
for(i=2;i<y;i++)
if(euclid(y,i)==true) nr++;
for(i=1;i<nr;i++){
k=x*k;
}
return k%y;
}
}
int main()
{
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int x,y;
f>>x>>y;
g<<solve(x , y);
return 0;
}
