Cod sursa(job #209713)

Utilizator vlad_popaVlad Popa vlad_popa Data 24 septembrie 2008 13:15:12
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.42 kb
#include <cstdio>

#define PRIM 1999999973

long long N, P, Ans, tmp;

int main () {
	freopen ("lgput.in", "r", stdin);
	freopen ("lgput.out", "w", stdout);
   
	scanf ("%lld %lld\n", &N, &P);
    for (long long step = Ans = 1, tmp = N; P; step <<= 1){
		if (P & step){
		   	Ans = (Ans * tmp) % PRIM;
			P -= step;
		}
		tmp = (tmp * tmp) % PRIM; 
		//printf ("%lld %lld\n", Ans, tmp);
	}

	printf ("%lld\n", Ans);

	return 0;
}