Cod sursa(job #1359825)

Utilizator bditmCatalin bditm Data 25 februarie 2015 08:34:02
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

int n,p;
long long Sol=1;
int a=1999999973;
void citeste()
{
fin>>n>>p;
}


void da()
{
	while(p)
	{
	if(p%2==1)
		Sol = (Sol * n) % a;
	n = (n * n)%a;
	p = p/2;
	}

	for(int i = 0; i<32; i++)
		{
			if(p & (1<<i))
				{
					Sol = (Sol * n) % a;
				}
			n = (n * n)% a;
		}

}

void afiseaza()
{
fout<<Sol<<"\n";
}

int main()
{
    citeste();
    da();
    afiseaza();
    return 0;
}