Cod sursa(job #1632215)

Utilizator dspMihaiDespotovici Mihai dspMihai Data 5 martie 2016 22:56:21
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>

#define MOD 1999999973

typedef struct {
	int N;
	int P;
} date_struct;

date_struct get_date(char* file_name) {
	date_struct date;
	FILE *in = fopen(file_name, "r");
	fscanf(in, "%d %d", &(date.N), &(date.P));
	fclose(in);
	return date;
}

unsigned long int put_log(int N, int P) {
	if (P == 0) {
		return 1;
	}
	if (P == 1) {
		return N;
	}
	if (P % 2) {
		return N * put_log(N * N, (P - 1) / 2) % MOD;
	}
	return put_log(N * N, P / 2) % MOD;
}

int main () {
	date_struct date = get_date("lgput.in");
	FILE *out = fopen("lgput_out", "w");
	fprintf(out, "%ld", put_log(date.N, date.P));
	fclose(out);
	return 0;
}