Cod sursa(job #362793)

Utilizator andrei.sfrentSfrent Andrei andrei.sfrent Data 10 noiembrie 2009 23:43:59
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <stdio.h>

#define MOD 1999999973

long long log_exp(long long n, long long p)
{
	if(p == 1) return n;
	else
	{
		int nextexp = log_exp(n, p / 2) % MOD;
		if(p % 2 == 1) return (((n * nextexp) % MOD) * nextexp) % MOD;
		else return (nextexp * nextexp) % MOD;
	}
}

int main()
{
	freopen("lgput.in", "r", stdin);
	freopen("lgput.out", "w", stdout);
	
	long long n, p;
	
	scanf("%lld%lld", &n, &p);
	
	printf("%lld\n", log_exp(n, p));
	
	return 0;
}