Cod sursa(job #206781)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 9 septembrie 2008 16:36:53
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.42 kb
#include <stdio.h>

const int MOD = 1999999973;

int main()
{
	freopen("lgput.in", "r", stdin);
#ifndef _SCREEN_
	freopen("lgput.out", "w", stdout);
#endif

	int N, P;
	scanf("%d %d\n", &N, &P);

	long long rez, put = N;
	if (P & 1) rez = N;
	else rez = 1;

	for (int i = 2; i <= P; i <<= 1) {
		put = ((put % MOD) * (put % MOD)) % MOD;
		if (P & i) {
			rez *= put;
			rez %= MOD;
		}
	}

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

	return 0;
}