Cod sursa(job #251816)

Utilizator willliIonel Bratianu willli Data 3 februarie 2009 13:45:35
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#include <stdlib.h>
#define in "lgput.in"
#define out "lgput.out"
#define MODULO 1999999973


long long pow(long long a, long long n)
{
	long long b;
	if (n == 0)
		return 1;
	if (n % 2 == 0)
	{
		b = pow(a, n / 2);
		return b * b % MODULO;
	}
	else 
	{
		return a * pow(a, n - 1) % MODULO;
	}
}

int main()
{
	FILE *fin, *fout;
	long long a, n;
	
	
	if ((fin = fopen(in, "r")) == NULL)
	{
		printf("Eroare \n");
		exit(-1);
	}
	fscanf(fin, "%lld%lld", &a,&n);
	fclose(fin);
	fout = fopen(out, "w");
	a = pow(a, n);
	printf("%lld\n", a);
	fprintf(fout,"%lld", a);
	fclose(fout);	
	return 0;
}