Cod sursa(job #146416)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 1 martie 2008 18:01:45
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.42 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;
	freopen("lgput.in", "r" ,stdin);
	freopen("lgput.out", "w" ,stdout);
	scanf("%d %d", &n,&p);
	for (int bit = 0; p > 0; p /= 2, ++bit)
	{
		if (p%2==1) 
		{
			rez=(rez*putere(n,bit))%numar;
		}
	}
	printf("%d\n", rez);
	return 0;
}