Cod sursa(job #1345264)
Utilizator | Data | 17 februarie 2015 14:42:47 | |
---|---|---|---|
Problema | Invers modular | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <iostream>
#include <fstream>
using namespace std;
long long a,n,p,nr;
int puterea(int b,int k)
{
if(k==0)
return 1;
if(k>>1<<1==k)
{
b*=b;
b%=n;
k>>=1;
b=(puterea(b,k))%n;
}
else
{
long long c=b;
b*=b;
b%=n;
k>>=1;
b=(puterea(b,k)*c)%n;
}
return b;
}
int main()
{
int i,j;
FILE *f=fopen("inversmodular.in","r");
FILE *g=fopen("inversmodular.out","w");
fscanf(f,"%d %d",&a,&n);
fprintf(g,"%d\n",(puterea(a,n-1))%n);
return 0;
}