Cod sursa(job #478405)

Utilizator a.stanciuStanciu Adrian a.stanciu Data 18 august 2010 15:09:43
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>
#include <stdlib.h>

#define N 1999999973

long long lgput(int n, int p)
{
	long long r;
	if (p == 0) return 1;
	else
	{
		if (p % 2 == 1)
		{
			r = lgput(n, (p - 1) / 2);
			r = (r * r) % N;
			r = (n * r) % N;
		}
		else
		{
			r = lgput(n, p / 2);
			r = (r * r) % N;
		}
	}
	return r;
}

int main()
{
	int n, p;
	long long r;
	FILE *f, *g;

	f = fopen("lgput.in", "r");
	g = fopen("lgput.out", "w");

	fscanf(f, "%d", &n);
	fscanf(f, "%d", &p);

	r = lgput(n, p);

	fprintf(g, "%lld\n", r);

	fclose(f);
	fclose(g);

	return 0;
}