Cod sursa(job #478553)

Utilizator marius21Marius Petcu marius21 Data 19 august 2010 09:39:50
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 kb
#include <cstdio>
#include <cstdlib>

#define MODNR 1999999973

FILE *fin=fopen("lgput.in","r");
FILE *fout=fopen("lgput.out","w");

int put(int a, int b)
{
	int p=1;
	for (int i=(sizeof(int)*8-2); i>=0; i--)
	{
		p=(p*p)%MODNR;
		if (b&(1<<i))
			p=(p*a)%MODNR;
	}
	return p;
}

int main (int argc, char * const argv[]) {
	int a,b;
    fscanf(fin, "%d %d", &a, &b);
	fprintf(fout, "%d\n", put(a,b));
	fclose(fin);
	fclose(fout);
    return 0;
}