Cod sursa(job #1632255)

Utilizator dspMihaiDespotovici Mihai dspMihai Data 5 martie 2016 23:25:32
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>

#define MOD 1999999973

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

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

unsigned long int put_log(unsigned long int N, unsigned long int P) {
	if (P == 1) {
		return N;
	}
	unsigned long int result = put_log(N, P>>1);
	if (P&1) {
		return (N * (result * result) % MOD) % MOD;
	}
	return (result * result) % 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;
}