Cod sursa(job #719513)

Utilizator AnteusPatrascoiu Mihai Anteus Data 21 martie 2012 20:47:17
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.42 kb
#include <stdio.h>
#define MOD 1999999973
FILE *f=fopen ("lgput.in", "r");
FILE *g=fopen ("lgput.out", "w");
long long a,b;

long long putere(long long a, int b) {
long long x=a;
int v[40],k=0;

while (b>1)
{
	v[++k]=b%2;
	b/=2;
}

while (k)
{
	a=(a*a)%MOD;

	if (v[k])
		a=(a*x)%MOD;
	k--;
}

return a;
}

int main() {
fscanf (f, "%lld%lld", &a,&b);

fprintf (g, "%lld", putere(a,b));
return 0;
}