Cod sursa(job #404896)

Utilizator nautilusCohal Alexandru nautilus Data 26 februarie 2010 21:17:47
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include<fstream.h>
#define rest 1999999973
long long n;

long long calcul (long long p)
{
 long long nr;
	
 if (p==1)
	 return n; else
	 if (p%2==1)
		 {
		  nr=calcul((p-1)/2);
		  return (n*((nr*nr)%rest))%rest;
		 } else
		 {
		  nr=calcul(p/2);
		  return (nr*nr)%rest;
		 }
}

int main()
{
 long long p;
	
 ifstream fin("lgput.in");
 fin>>n>>p;
 
 ofstream fout("lgput.out");
 fout<<calcul(p);
 
 fin.close();
 fout.close();
	
 return 0;
}