Cod sursa(job #2225821)

Utilizator AraldaAralda Pacurar Aralda Data 28 iulie 2018 13:32:49
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#define MODULO 1999999973

long long power(long long base, long long exp) {

	if (exp == 0) {

		return 1;
	}
	
	if (exp == 1) {

		return base % MODULO;
	}

	long long temp = power(base, exp / 2);
	temp = temp * temp;

	if (exp % 2 == 0) {

		return temp % MODULO;
	}
	else {

		return ((base % MODULO) * (temp % MODULO)) % MODULO;
	}

}

int main() {

	FILE* ip;
	ip = fopen("lgput.in", "r");
	if (ip == NULL) {

		perror("Error opening input file");
		return 1;
	}

	FILE* op;
	op = fopen("lgput.out", "w");
	if (op == NULL) {

		perror("Error opening output file");
		return 1;
	}

	long long base, exp;
	fscanf(ip, "%lld%lld", &base, &exp);

	fprintf(op, "%lld", power(base, exp));

	fclose(ip);
	fclose(op);

	return 0;
}