Cod sursa(job #379962)
| Utilizator | Data | 4 ianuarie 2010 15:03:30 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.45 kb |
#include <fstream>
using namespace std;
#define in "lgput.in"
#define out "lgput.out"
const long int MOD = 1999999973;
long int N, P;
int main( void )
{
freopen ( in ,"r", stdin );
freopen ( out, "w", stdout );
scanf ( "%ld%ld", &N, &P );
int i;
long int result = 1;
long int A = N;
for ( i = 0; (1L<<i) <= P; ++i )
{
if ( P & (1L<<i) ) { result = ((result * A)%MOD); }
A = ( ( A * A ) % MOD );
}
printf ( "%ld\n", result );
return 0;
}
