Cod sursa(job #146418)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 1 martie 2008 18:03:43
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.45 kb
#include <stdio.h>

const int numar=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)%numar;
	return r;
}

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