Cod sursa(job #146929)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 2 martie 2008 13:54:06
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.38 kb
#include <stdio.h>
#include <string.h>
#include <math.h>

long n_max = 10001, m = 2000000000, i, n, p;
long long sol;

int main() {
	freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	scanf("%ld %ld", &n, &p);
	sol = 1;
	for (i = 0; (1<<i) <= p; ++i) {
		if ( ((1 << i) & p) > 0)
			sol = (sol * n) % m;	
			n = (n * n) % m;
	}
	printf("%lld\n", sol);
}