Cod sursa(job #2461024)

Utilizator 1chiriacOctavian Neculau 1chiriac Data 24 septembrie 2019 20:24:48
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>

using namespace std;
ifstream fin ("lgput.in");
ofstream fout ("lgput.out");
const long long modu=1999999973;
/*long long putere_log (int a,int n)
{
	if(n==0)
		return 1;
	else
	{
		if(n%2==1)
			return ((a%modu)*(putere_log(((a%modu)*(a%modu))%modu,n/2))%modu)%modu;
		else
			return putere_log(((a%modu)*(a%modu))%modu,n/2)%modu;
	}
}*/
int main ()
{
	long long n,p,putere=1,i;
	fin>>n>>p;
	for(i=0;(1LL<<i)<=p;++i)
	{
		if((p & (1LL<<i))==(1LL<<i))
			putere=(putere*n)%modu;
		n=((n%modu)*(n%modu))%modu;
	}
	//fout<<putere_log(n,p);
	fout<<putere;
	return 0;
}