Pagini recente » Cod sursa (job #523577) | Cod sursa (job #1836154) | Cod sursa (job #2416120) | Cod sursa (job #2175426) | Cod sursa (job #1521011)
#include <fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int a,n,p,i,l,c;
long long pow,ans;
int main()
{
f>>a>>n;
l=n;
p=n;
for (i=2;i*i<=n;i++)
if (n%i==0){
while(n%i==0)
n/=i;
p=(p/i)*(i-1);
}
if (n>1)
p=(p/n)*(n-1);
p--;
ans=1;
pow=a%l;
for (i=0;(1<<i)<=p;i++)
{
if (p & (1<<i))
ans=((ans%l)*(pow%l))%l;
pow=((pow%l)*(pow%l))%l;
}
g<<ans<<' ';
return 0;
}