Cod sursa(job #352804)

Utilizator Bit_MasterAlexandru-Iancu Caragicu Bit_Master Data 3 octombrie 2009 14:43:27
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.43 kb
#include <cstdio>

int rest_putere (int n, int p)
{
	int r = n;
	while (p > 1)
	{
		if (p % 2 == 0)
		{
			p /= 2;
			r = (int)(((long long)r * r)%1999999973);
		}
		else
		{
			p -= 1;
			r = (int)(((long long)r * n)%1999999973);
		}
	}
	return r;
}

int main()
{
	int n,p;
	freopen ("lgput.in","r",stdin);
	freopen ("lgput.out","w",stdout);
	scanf ("%d%d",&n,&p);
	printf ("%d",rest_putere(n,p));
	return 0;
}