Pagini recente » Cod sursa (job #1372016) | Cod sursa (job #2077085) | Cod sursa (job #510487) | Cod sursa (job #1782613) | Cod sursa (job #1754261)
#include<fstream>
#include<iostream>
#define ll long long
using namespace std;
ifstream si("inversmodular.in");
ofstream so("inversmodular.out");
ll phi(ll val)
{
ll cont=val;
ll i;
if(val%2==0)
{
while(val%2==0)
{
val/=2;
}
cont/=2;
}
for(i=3;i*i<=val;i+=2)
{
if(val%i==0)
{
while(val%i==0)
{
val/=i;
}
cont=(cont/i)*(i-1);
}
}
if(val!=1)
{
cont=cont/val*(val-1);
}
return cont;
}
int main()
{
ll n,m;
si>>n>>m;
ll put=phi(m)-1;
ll val=1;
while(put)
{
if(put&1)
{
val=(val*n)%m;
}
n=(n*n)%m;
put>>=1;
}
so<<val;
return 0;
}