Cod sursa(job #377196)

Utilizator ChallengeMurtaza Alexandru Challenge Data 23 decembrie 2009 18:20:33
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>

using namespace std;

const char InFile[]="lgput.in";
const char OutFile[]="lgput.out";
const unsigned long int M=1999999973;

unsigned long int N,P;

unsigned long int pow(unsigned long int p){
	if(p==2){return (N*N)%M;}
	else{
		if(p%2==0){
			unsigned long int half=pow(p/2);
			return (half*half)%M;
		}else{
			return (N*pow(p-1))%M;
		}
	}
}

int main(){
	ifstream fin(InFile);
	fin>>N>>P;
	fin.close();
	ofstream fout(OutFile);
	fout<<pow(P);
	fout.close();
	return 0;
}