Cod sursa(job #1943968)

Utilizator DimaTCDima Trubca DimaTC Data 28 martie 2017 21:39:19
Problema Ridicare la putere in timp logaritmic Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.45 kb
#include<iostream>
#include<fstream>
#define x 1999999973
using namespace std;
long long n,p;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

long long putere(long long n, long long p) {
	if (p==0) return 1;
	else {	
	if (p==1) return n%x;
	if (p%2==0) return putere(n,p/2)*putere(n,p/2)%x;
	if (p%2==1) return putere(n,(p-1)/2)*putere(n,(p-1)/2)*n%x; 
	}
}
int main(){
	fin >>n>>p;
   
	fout << putere(n,p);
	
	return 0;
}