Cod sursa(job #330928)

Utilizator szabotamasSzabo Tamas szabotamas Data 11 iulie 2009 23:47:01
Problema Ridicare la putere in timp logaritmic Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <iostream>

using namespace std;

#define mod 1999999973
long long int n,p;

long long int lg (long long int n, long long int p){
	if (p==1) return n;
	else
		if (!p%2){
			long long int k=lg(n,p/2);
			return ((k%mod)*(k%mod))%mod;
		}
		else {
			long long int k=lg(n,p-1);
			return (k*n)%mod;
		}
}

int main(){
	freopen ("lgput.in", "r", stdin);
		scanf("%lli %lli", &n, &p);
	fclose(stdin);
	n=n%mod;
	freopen ("lgput.out", "w", stdout);
		printf("%lli", lg(n,p)%mod);
	fclose(stdout);
	return 0;
}