Cod sursa(job #169260)

Utilizator sanaDascalu Laurentiu sana Data 1 aprilie 2008 15:00:32
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.4 kb
#include <stdio.h>
#include <stdlib.h>

#define M 1999999973

int main() {
	unsigned int i, n, p;
	long long a, sol;
	FILE *fin, *fout;

	fin=fopen("lgput.in", "rt");
	fout=fopen("lgput.out", "wt");

	fscanf(fin, "%d %d", &n, &p);
	a=n;
	sol=1;

	for (i=0; (1<<i)<=p; ++i) {
		if (((1<<p) &p)>0) {
			sol=(sol*a)%M;
		}
		a=(a*a)%M;
	}

	fprintf(fout, "%lld", sol);
	fclose(fout);
	fclose(fin);
	return 0;
}