Cod sursa(job #392885)

Utilizator O_NealS. Alex O_Neal Data 8 februarie 2010 15:43:50
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==1) return x; 
	else if(n%2) 
	{ 
		unsigned long rez = putere(x % nr,n/2) % nr;
		return (x%nr)*((rez*rez)%nr);
	}
	else 
	{
		unsigned long rez = putere(x % nr ,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;
}