Pagini recente » Cod sursa (job #1976198) | Cod sursa (job #1477115) | Cod sursa (job #3262845) | Cod sursa (job #3216187)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin ("inversmodular.in");
ofstream fout ("inversmodular.out");
int mod;
int phi(int n)
{
int r = n , d = 2;
while(n > 1)
{
if(n % d == 0)
{
r = r / d * (d - 1);
while(n % d == 0)
n /= d;
}
d ++;
if(d * d > n)
d = n;
}
return r;
}
ll exponentiere (ll a, ll b)
{
ll rez=1;
while (b!=0) {
if (b%2==1) {
rez*=a;
rez%=mod;
}
a*=a;
a%=mod;
b/=2;
}
return rez;
}
int main()
{
int n;
fin>>n>>mod;
int ph=phi(mod);
int rez=exponentiere(n, ph-1);
fout<<rez;
return 0;
}