Cod sursa(job #1842685)

Utilizator SMerlinJacobsen Iandru SMerlin 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;
}