Pagini recente » Monitorul de evaluare | Cod sursa (job #742789) | Cod sursa (job #961083) | Cod sursa (job #1844259) | Cod sursa (job #2756054)
#include <bits/stdc++.h>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int phi(int n){
int res=n;
for(int i=2;i*i<=n;++i){
if(n%i==0){
res*=(i-1);
res/=i;
while(n%i==0){
n/=i;
}
}
}
if(n>1){
res*=(n-1);
res/=n;
}
return res;
}
int put(int a, int n){
int p=1;
while(n){
if(n%2){
p=p*a;
}
a=a*a;
n/=2;
}
return p;
}
int a, n;
int main(){
f >> a >> n;
g << put(a, phi(n)-1)%n;
return 0;
}