Cod sursa(job #392880)

Utilizator O_NealS. Alex O_Neal Data 8 februarie 2010 15:37:43
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
#define nr 1999999973
using namespace std;

unsigned long putere(unsigned long x, unsigned long n)
{
	if(n==0) return 1; 
	else if(n%2) 
	{ 
		unsigned long rez = putere(x,(n-1)/2) % nr;
		return (x%nr)*((rez*rez)%nr);
	}
	else 
	{
		unsigned long rez = putere(x,n/2) % nr;
		return (rez*rez)%nr;
	}
}


int main()
{
	freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	unsigned long x,n,p;
	scanf("%lu %lu", &n, &p);
	x=putere(n%nr,p);
	x%=1999999973;
	printf("%lu\n", x);
	return 0;
}