Cod sursa(job #2195812)

Utilizator vic2002Melinceanu Victor vic2002 Data 17 aprilie 2018 13:39:38
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#pragma GCC optimize("O3")
#include<bits/stdc++.h>
#define rc(x) return cout<<x<<endl,0
#define pb push_back
#define in insert
#define er erase
#define fd find
#define fr first
#define sc second
typedef long long ll;
const ll INF=0x3f3f3f3f3f3f3f3f;
const ll llinf=(1LL<<61);
const int inf=(1<<30);
const int nmax=1e5+50;
const int mod=1999999973;
using namespace std;
ll n,p;
ll pw(ll n,ll p)
{
	ll tmp=n,ans=1;
	for(int i=0;i<=32;i++)
	{
		if(p&(1LL<<i))ans=(ans*tmp)%mod;
		tmp=(tmp*tmp)%mod;
	}
	return ans;
}
int main()
{
    freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
	cin>>n>>p;
	cout<<pw(n,p)<<endl;
	return 0;
}