Cod sursa(job #405386)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 27 februarie 2010 22:44:05
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>
#define rest 1999999973

long long  N,P;

void citire()
{
	FILE *fin=fopen("lgput.in","r");
	
	fscanf(fin,"%lld %lld",&N,&P);
	
	fclose(fin);
}

long long f(long long n)
{
	if (!n) return 1;
	
	long long ret;
	
	if(n%2) 
	{
		ret=f((n-1)/2);
		ret=(ret*ret)%rest;
		ret=(ret*N)%rest;
		return ret;
	}
	
	else 
	{
		ret=f(n/2);
		ret=(ret*ret)%rest;
		return ret;
	}
	
}

void afisare()
{
	FILE *fout=fopen("lgput.out","w");
	
	fprintf(fout,"%lld",f(P));
}


int main()
{
	citire();
	afisare();
	
}