Cod sursa(job #1679473)
| Utilizator | Data | 7 aprilie 2016 23:38:01 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("lgput.in" );
ofstream g("lgput.out");
#define MOD(x) ( x%1999999973!=0?x%1999999973:1 )
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);
}
