Pagini recente » Cod sursa (job #237108) | Cod sursa (job #3176686) | Cod sursa (job #1131786) | Cod sursa (job #3142454) | Cod sursa (job #2424694)
#include <bits/stdc++.h>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int n,a,x;
int putere(int b,int e)
{
if(e==0)return 1;
int r=putere(b,e/2);
r=1LL*r*r%n;
if(e%2==1)r=1LL*r*b%n;
return r;
}
int euler(int n)
{
int phi=1;
if(n%2==0){n/=2;while(n%2==0){n/=2;phi*=2;}}
for(int d=3;d*d<=n;d+=2)
if(n%d==0){n/=d;while(n%d==0){n/=d;phi*=d;}}
if(n>1)phi*=n-1;
return phi;
}
int main()
{
f>>a>>n;
g<<putere(a,euler(n)-1);
return 0;
}