Cod sursa(job #478556)

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

#define MODNR 1999999973

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

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

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