Pagini recente » Cod sursa (job #1125351) | Cod sursa (job #664007) | Cod sursa (job #2584975) | Cod sursa (job #1789028) | Cod sursa (job #1369633)
//#include <iostream>
#include <fstream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
ifstream cin("inversmodular.in");
ofstream cout("inversmodular.out");
int i,n,a,p,s;
int getphi(int n){
int nr=n;
for(int i=2;i*i<=n;i++){
if(n%i==0){
while(n%i==0){
n/=i;
}
nr=nr/i*(i-1);
}
}
if(n!=1){
nr=nr/n*(n-1);
}
return nr;
}
int pow(int a, int p){
int s=1;
int nr=a;
for(int put=1;put<=p;put=put<<1){
if(put&p){
s=(s*nr)%n;
}
nr=(nr*nr)%n;
}
return s;
}
int main(){
cin>>a>>n;
cout<<pow(a,getphi(n)-1);
return 0;
}