Cod sursa(job #396409)

Utilizator g3ppyStoian Vlad g3ppy Data 15 februarie 2010 11:39:04
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#define MD 1999999973
FILE *fin,*fout;

long long n,p;

long long powerzor (long long n, long long p)
{
	if (p == 0) return 1;
	
	long long bit, aux;
	bit = p&1;
	
	if (bit == 0)
		{
			aux = (powerzor(n,p>>1)) % MD;
			return ( (aux * aux) % MD );
		}
	aux = powerzor(n, (p-1)>>1) % MD;
	return ( ( ( (n * aux) % MD ) * aux ) % MD );
}


int main()
{long long rez;
	fin = fopen ("lgput.in","rt");
	fout = fopen ("lgput.out","wt");
	
	fscanf(fin,"%lld %lld\n",&n,&p);
	
	rez = powerzor(n,p);
	
	fprintf(fout,"%lld\n",rez);
	
	fclose(fin);
	fclose(fout);	
return 0;	
}