Cod sursa(job #2028972)

Utilizator bcrisBianca Cristina bcris Data 28 septembrie 2017 21:26:19
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>

#define NMAX 8

using namespace std;

long long n, p;
const long long N = 1999999973;

long long ridicarea() {
	if (p == 0) 
		return 1;

	int y = 1;
	while (p > 1) {
		if (p % 2 == 0) {
			n = (n * n) % N;
			p = p / 2;
		} else {
			y = (y * n) % N;
			n = (n * n) % N;
			p = (p - 1) / 2; 
		}
	}

	return (n * y) % N;
}

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

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


	printf("%lld\n", ridicarea());
	return 0;
}