Pagini recente » Cod sursa (job #3241115) | Cod sursa (job #3284255) | Cod sursa (job #2717696) | Cod sursa (job #234824) | Cod sursa (job #228504)
Cod sursa(job #228504)
#include<stdio.h>
long long n,m;
long long phi(long long nr){
long long a=nr;
for(long long i=2;i*i<=nr;++i){
if(nr%i==0){
while(nr%i==0)
nr/=i;
a=(a/i)*(i-1);
}
}
if(nr)
a=(a/nr)*(nr-1);
return a;
}
int main(){
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
long long put,p,congr=1,nr;
scanf("%lld%lld",&n,&m);
put=phi(m)-1;
nr=n;
for(p=1;p<=put;++p){
if(p&put)
congr=(congr*nr)%m;
nr=(nr*nr)%m;
}
printf("%lld\n",congr);
fclose(stdin);
fclose(stdout);
return 0;
}