Cod sursa(job #1914690)
Utilizator | Data | 8 martie 2017 18:07:06 | |
---|---|---|---|
Problema | Invers modular | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
long long int n, p;
long long int logPow( long long int bz , long long int put ) {
long long int aux = 1;
while ( put > 1 ) {
if ( put % 2 == 0 ) {
bz *= bz;
bz %= p;
put /= 2;
} else {
aux *= bz;
aux %= p;
put--;
}
}
return ( aux * bz ) % p;
}
int main()
{
fin >> n >> p;
fout << logPow( n , p - 2 );
return 0;
}