Cod sursa(job #1842724)

Utilizator SMerlinJacobsen Iandru SMerlin Data 7 ianuarie 2017 15:03:58
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 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 (long long int) n;
	else if (p % 2 == 0) return (long long int) exp_by_squaring(n*n, p / 2);
	else return (long long int) n*exp_by_squaring(n*n, (p - 1) / 2);
}

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

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

	system("Pause");
	return 0;
}