Cod sursa(job #1842980)

Utilizator SMerlinJacobsen Iandru SMerlin Data 7 ianuarie 2017 21:47:59
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
#include<cstdlib>
#define mod 1999999973
#pragma warning(disable:4996)
using namespace std;

long long int exp_by_squaring(long long int n, long long int p) {
	if (p == 0) return 1;
	else if (p == 1) return n;
	else if (p % 2 == 0) return (long long int) exp_by_squaring(n*n, p / 2) % mod;
	else return (long long int) n*exp_by_squaring(n*n, (p - 1) / 2) % mod;
}

int main() {
	freopen("lgput.in", "r", stdin);
	freopen("lgput.out", "w", stdout);

	long long int n, p;
	scanf("%lld %lld", &n, &p);
	printf("%lld", exp_by_squaring(n, p));

	//system("Pause");
	return 0;
}