Pagini recente » Cod sursa (job #2356076) | Cod sursa (job #2542022) | Cod sursa (job #1808381) | Cod sursa (job #2367331) | Cod sursa (job #1344669)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
#define llu unsigned long long int
llu a,n;
int fi()
{
llu res=n,i;
for(i=2;i*i<n;i++)
{
if (n%i==0) res -=res/i;
while(n%i==0)
res /=i;
}
if(n>1)
res -= res/n;
return res;
}
llu rtl(llu p)
{
if (p==0)
return 1;
else
{
if (p%2)
{
llu q = rtl(p/2);
return (q*a*q)%n;
}
else
{
llu q = rtl(p/2);
return (q*q)%n;
}
}
}
int main()
{
llu p;
in>>a>>n;
p = fi()-1;
out<<rtl(p);
}