Cod sursa(job #1679426)
| Utilizator | Data | 7 aprilie 2016 22:39:34 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("lgput.in" );
ofstream g("lgput.out");
#define MOD(x) (x % 1999999973)
int N, P;
int square(int x) { return x*x; }
long long FastPow(int base, int exponent) {
if ( exponent == 0 ) return 1;
if ( exponent == 1 ) return base;
if ( exponent%2 )
return MOD(base * square(FastPow(base, (exponent-1) / 2)));
else
return MOD(square(FastPow(base, exponent/2)));
}
int main() {
f >> N >> P;
g << FastPow(N, P);
}
