Cod sursa(job #1943960)

Utilizator DimaTCDima Trubca DimaTC Data 28 martie 2017 21:35:24
Problema Ridicare la putere in timp logaritmic Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 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)%x*putere(n,p/2)%x;
	if (p%2==1) return putere(n,(p-1)/2)%x*putere(n,(p-1)/2)*n%x; 
	}
}
int main(){
	long long n,p;
	fin >>n>>p;
   
	fout << putere(n,p);
	
	return 0;
}