Cod sursa(job #146402)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 1 martie 2008 17:52:16
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.4 kb
#include <stdio.h>

const int numar=1999999973;

int n,p;

int putere( int n, int e ) 
{
	int r=n;
	for (int i=1;i<=e;++i)
		r=(r*r)%numar;
	return r;
}

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