Cod sursa(job #1359827)

Utilizator bditmCatalin bditm Data 25 februarie 2015 08:36:23
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>
#define a 1999999973
using namespace std;

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

int n,p;
long long Sol=1;

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;
}