Cod sursa(job #146948)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 2 martie 2008 14:04:20
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.42 kb
#include <stdio.h>
#include <string.h>
#include <math.h>

const int n_max = 10001;
const int m = 1999999973;
long long i, n, p, a;
long long sol;

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