Pagini recente » Cod sursa (job #97630) | Cod sursa (job #1468305) | Cod sursa (job #1917982) | Cod sursa (job #1012005) | Cod sursa (job #2253140)
#include <bits/stdc++.h>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int n,m,a,fi,d;
int putere(int b,int e)
{
if(e==0)return 1;
int r=putere(b,e/2);
r=1LL*r*r%m;
if(e%2)r=1LL*b*r%m;
return r;
}
int main()
{
f>>a>>n;
m=fi=n;
if(n%2==0){fi/=2;while(n%2==0)n/=2;}
for(int d=3;d*d<=n;d+=2)if(n%d==0){fi=fi/d*(d-1);while(n%d==0)n/=d;}
if(n>1){fi=fi/n*(n-1);}
g<<putere(a,fi-1);
return 0;
}