Cod sursa(job #405119)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 27 februarie 2010 16:18:36
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>

int N,P;

void citire()
{
	FILE *fin=fopen("lgput.in","r");
	
	fscanf(fin,"%I64d %I64d",&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)%1999999973;
		ret=ret*ret%1999999973;
		ret=ret*N;
		return ret;
	}
	
	else 
	{
		ret=f(n/2)%1999999973;
		ret=ret*ret%1999999973;
		return ret;
	}
	
}

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


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