Cod sursa(job #417594)
| Utilizator | Data | 14 martie 2010 16:32:07 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.42 kb |
#include<stdio.h>
FILE *f,*g;
long i,d,ok,n,nr,x,a;
int main()
{ f=fopen("inversmodular.in","r"); g=fopen("inversmodular.out","w");
fscanf(f,"%ld%ld",&a,&n);
for(i=2;i<n;i++)
{ d=2; ok=0;
while(!ok&&d<=i)
if(n%d==0&&i%d==0) ok=1;
else
if(d==2) d++;
else d+=2;
if(!ok) nr++;
}
x=a;
for(i=1;i<nr;i++) { x=x*a; x=x%n; }
fprintf(g,"%ld",x);
fclose(g);
return 0;
}
