Cod sursa(job #1022779)

Utilizator TzapulPaun Victor Tzapul Data 5 noiembrie 2013 22:29:20
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
#include<string.h>
#define q 1999999973

FILE *f=fopen("lgput.in","r");
FILE *g=fopen("lgput.out","w");

long long putere(int , int);

int main()
{
	long long n,p;
	fscanf(f,"%lld%lld",&n,&p);
	fprintf(g,"%lld",putere(n,p)%q);
}

long long putere(int x,int n)
{
	if (n<0) 
		return putere(1/x, -n);
     else 
		if (n==0) 
			return 1;
			else 
			if (n==1)
				return x;
				else 
					if (n%2==0) 
						return putere(x*x, n/2);
						else 
							if (n%2!=0) 
								return x * putere(x*x, (n-1)/2);
}