Cod sursa(job #1188162)

Utilizator preda_alexandruPreda Alexandru preda_alexandru Data 18 mai 2014 23:52:56
Problema Ridicare la putere in timp logaritmic Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <cstdio>
#include <assert.h>

#define MODVAL 1999999973

unsigned long long lgput(unsigned long long n, unsigned long long p)
{
	if (p == 1)
		return n;

	unsigned long long rc = lgput(n, p / 2);

	if (p % 2 == 0)
		return (rc * rc) % MODVAL;
	else
		return (rc * rc * n) % MODVAL;
}

int main()
{
	unsigned long long n, p;

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

	scanf("%llu %llu", &n, &p);
	printf("%llu\n", lgput(n, p));

	return 0;
}