Cod sursa(job #1726749)

Utilizator elena.marinicaMarinica Elena-Georgiana elena.marinica Data 8 iulie 2016 21:09:39
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <bits/stdc++.h>

long long power(long long n, long long e) {
	
	if (e == 0) return 1;
	
	long long y = 1;
	
	while (e > 1) {
		if (e % 2 == 0) {
			n = (n * n) % 1999999973;
			e = e / 2;
		}
		else {
			y = (y * n) % 1999999973;
			n = (n * n) % 1999999973;
			e = (e - 1) / 2;
		}
		
	}
	
	return ((n * y) % 1999999973); 
}

int main() {
	
	FILE *fin = fopen("lgput.in", "r");
	FILE *fout = fopen("lgput.out", "w");
	
	long long n, e;
	
	fscanf(fin, "%lld %lld", &n, &e);
	
	long long x = power(n, e);
	fprintf(fout, "%lld\n", x);
	
	fclose(fin);
	fclose(fout);
}