Cod sursa(job #1051924)
| Utilizator | Data | 10 decembrie 2013 18:19:36 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <cstdio>
int rest;
int lp( int a, int n ) {
if( n == 0 )
return 1;
if( a == 0 )
return 0;
if( n % 2 == 0 )
return lp( ( (long long)a * a) % rest, n / 2 );
return ( (long long)a * lp( a, n - 1 ) ) % rest;
}
int main () {
FILE *f, *g;
f = fopen( "inversmodular.in", "r" );
g = fopen( "inversmodular.out", "w" );
int a, n;
fscanf( f, "%d%d", &a, &n );
rest = n;
fprintf( g, "%d\n", lp( a, n - 2 ) );
fclose( f );
fclose( g );
return 0;
}
