Pagini recente » Cod sursa (job #1445320) | Cod sursa (job #2715367) | Cod sursa (job #3285950) | Cod sursa (job #1562125) | Cod sursa (job #2124461)
#include <iostream>
#include <fstream>
std::ifstream f("inversmodular.in");
std::ofstream g("inversmodular.out");
using namespace std;
long long n;
long long my_pow(long long a,long long b)
{
long long r=1;
while(b)
{
if(b%2)
{
r=(a%n)*(r%n);
r%=n;
}
a*=a;
a%=n;
b/=2;
}
return r;
}
bool prim(long long n)
{
if(n<2) return false;
for(int j=2; j*j<=n; j++)
if(n%j==0) return false;
return true;
}
int main()
{
long long a;
f>>a>>n;
long long fi;
fi=n;
bool k;
for(int i=2; i*i<=n; i++)
{
k=false;
while(n%i==0)
{
n/=i;
k=true;
}
if(k) fi=(fi/i) * (i-1);
}
if(n>1) fi=(fi/n)*(n-1);
g<<my_pow(a,fi-1);
return 0;
}