Cod sursa(job #542588)

Utilizator balakraz94abcd efgh balakraz94 Data 26 februarie 2011 16:22:09
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#define L 100
#define x 1999999973
using namespace std;

void citeste();
void powlog();
void afiseaza();

int n,p;
short a[L];
unsigned long long sol=1;

void citeste()
{
	freopen("lgput.in","r",stdin);
	
	scanf("%d %d", &n, &p);
	
	fclose(stdin);
}


void powlog()
{
	while(p)
	{
		a[0]++;
		if(p%2) a[a[0]]=1;
		p/=2;
	}
	
	for(int i=a[0];i>=1;i--)
	{
		sol=(sol*sol)%x;
		if(a[i]) sol=(sol*n)%x;
	}
}



void afiseaza()
{
	freopen("lgput.out","w",stdout);
	
	printf("%lld",sol);
	
	fclose(stdout);
}




int main()
{
	
   citeste();
   powlog();
   afiseaza();
   
   return 0;

}