Cod sursa(job #2028026)

Utilizator bcrisBianca Cristina bcris Data 26 septembrie 2017 23:51:11
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 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_odd = 1;
	while (p > 1) {
		if (p % 2 == 0) {
			n *= n;
			p = p / 2;
		} else {
			n_odd *= n;
			n *= n;
			p = (p - 1) / 2; 
		}
	}

	return n * n_odd;
}

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;
}