Pagini recente » Cod sursa (job #1357896) | Cod sursa (job #1503116) | Cod sursa (job #431597) | Cod sursa (job #1938956) | Cod sursa (job #2124450)
#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;
int k;
for(int i=2; i*i<=n; i++)
{
k=0;
while(n%i==0)
{
n/=i;
k=1;
}
if(k==1) fi=(fi/i) * (fi-1);
}
if(n>1) fi=(fi/n)*(n-1);
g<<my_pow(a,fi-1);
return 0;
}