Cod sursa(job #2028008)

Utilizator bcrisBianca Cristina bcris Data 26 septembrie 2017 23:23:50
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>
#include <vector>

#define NMAX 8

using namespace std;

int n, p;

int ridicarea(int n, int p) {
	if (p == 0) 
		return 1;
	if (p == 1) 
		return n;
	int current_p = 0;
	int n_sqrt = n * n;
	long n_current = 1;
	while (current_p < p - 1) {
		n_current *= n_sqrt;
		current_p += 2;
	}
	if (p % 2 != 0) {
		n_current *= n;
	}

	return n_current;
}

int main(int argc, char const *argv[])
{
	freopen("lgput.in", "r", stdin);
	freopen("lgput.out", "w", stdout);

	scanf("%d %d\n", &n, &p);	

	long n_p = ridicarea(n, p);

	printf("%ld\n", n_p % 1999999973);
	return 0;
}