Cod sursa(job #504018)

Utilizator icepowdahTudor Didilescu icepowdah Data 26 noiembrie 2010 12:44:16
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.46 kb
#include <stdio.h>

#define NUMBER 1999999973

unsigned int pow_log(unsigned int n, unsigned int p)
{
	unsigned int res=1, tmp=n;
	while ( p != 0)
	{
		if ( p%2 == 0)
		{
			p /= 2;
			tmp *= tmp;
		}
		else
		{
			--p;
			res *= tmp;
		}
	}
	return res;
}

int main(void)
{
	unsigned int n, p;
	freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	
	scanf("%u %u",&n, &p);
	printf("%u\n",(pow_log(n,p) % NUMBER));

	return 0;
}