Cod sursa(job #1842685)
| Utilizator | Data | 7 ianuarie 2017 14:10:34 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include<stdio.h>
#include<cstdlib>
#define mod 1999999973
#pragma warning(disable:4996)
using namespace std;
int exp_by_squaring(int n, int p) {
if (p == 0) return 1;
else if (p == 1) return n;
else if (p % 2 == 0) return exp_by_squaring(n*n, p / 2);
else return n*exp_by_squaring(n*n, (p - 1) / 2);
}
int main() {
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
int n, p;
scanf("%d %d", &n, &p);
printf("%d", exp_by_squaring(n, p) % mod);
//system("Pause");
return 0;
}