Cod sursa(job #988727)

Utilizator helios11radu mihai helios11 Data 23 august 2013 18:50:21
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
//Dandu-se doua numere naturale N si P, se cere sa se calculeze restul impartirii lui N^P la 1999999973.
#include <stdio.h>

long long int N, P;
long long int mod = 1999999973;

long long int logPow(long long int n, long long int p){
	long long int z = 1;

	n = n % mod;
	while(p > 0){
		if(p % 2 == 1){
			z = (z * n) % mod;
		}

		n = (n * n) % mod;
		p = p / 2;
	}
	
	return (z % mod);
}

void read(){
	freopen("lgput.in", "r", stdin);
	scanf("%lld", &N);
	scanf("%lld", &P);
}

int main(){
	freopen("lgput.out", "w", stdout);
	read();
	printf("%lld", logPow(N, P));
	return 0;
}