Pagini recente » Cod sursa (job #1814609) | Cod sursa (job #1856090) | Cod sursa (job #1091054) | Cod sursa (job #2560005) | Cod sursa (job #3225380)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int a,b;
int phi(int n)
{
int i,rezultat = n;
for(i=2;i*i<=n;i++)
if(n%i == 0)
{
while(n%i==0)
n=n/i;
rezultat = rezultat-rezultat/i;
}
if(n>1)
rezultat-=rezultat/n;
return rezultat;
}
long long recursiv(long long x,int n)
{
if(n ==0)
return 1;
long long x_pat = recursiv(x,n/2);
x_pat = (x_pat * x_pat)%b;
if(n%2==0)
return x_pat;
else
return (x*x_pat)%b;
}
int main()
{
fin>>a>>b;
fout<<recursiv(a,phi(b)-1);
//cout<<nr_prime_mici();
return 0;
}