Cod sursa(job #1106977)

Utilizator anaid96Nasue Diana anaid96 Data 13 februarie 2014 15:07:05
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>

using namespace std;

FILE *in,*out;

//constante
const long long mod=1999999973;
//functii
long long calc(long long nr,long long putere);

//variabile
long long n,p;

int main(void)
{
	in=fopen("lgput.in","rt");
	out=fopen("lgput.out","wt");
	
	fscanf(in,"%lld%lld",&n,&p);
	fprintf(out,"%lld",calc(n,p));
	fclose(in);
	fclose(out);
	return 0;
}	

long long calc(long long numar,long long putere)
{
	if(putere==0)
		return 1;
	if(putere==1)
		return numar;		
	if(putere%2)
		return numar * calc(numar*numar, (putere-1)/2)%mod;
	else
		return calc(numar*numar,putere/2)%mod;
}