Cod sursa(job #145535)

Utilizator tudalexTudorica Constantin Alexandru tudalex Data 28 februarie 2008 21:54:09
Problema Ridicare la putere in timp logaritmic Scor Ascuns
Compilator cpp Status done
Runda Marime 0.46 kb
#include <cstdio>

const int MOD = 1999999973;

int n,p;

int putere_2 ( int n, int e ) {
	int r = n;
	for (int i = 1; i <= e; ++i)
		r = ((long long)r*r)%MOD;
	return r;
}

int main() {
	freopen("lgput.in","rt",stdin);
	freopen("lgput.out","wt",stdout);
	scanf("%d %d",&n,&p);
	int rez = 1;
	for (int bit = 0; p > 0; p /= 2, ++bit) {
		if (p % 2 == 1) {
			rez = ((long long)rez * putere_2(n,bit))%MOD;
		}
	}
	printf("%d\n",rez);
	return 0;
}