Cod sursa(job #1365144)
Utilizator | Razvan Brinzea Razzinnator | Data | 28 februarie 2015 09:06:51 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.63 kb |
#include <iostream>
#include <stdio.h>
#define MODULO 1999999973
using namespace std;
FILE *f = fopen( "lgput.in", "r" );
FILE *g = fopen( "lgput.out", "w" );
long putere( int x, int n )
{
if( n == 0 )
{
return 1;
}
if( n == 1 )
{
return x % MODULO;
}
if( n%2 == 0 )
{
return putere( x*x, n/2 ) % MODULO;
}
else
{
return x * putere( x*x, (n-1)/2 ) % MODULO;
}
}
int main()
{
long n, p;
fscanf( f, "%ld %ld", &n, &p );
fprintf( g, "%ld", putere( n, p ) );
fclose( f );
fclose( g );
return 0;
}