Cod sursa(job #2775166)

Utilizator paisieRusu Paisie paisie Data 14 septembrie 2021 18:09:16
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define mp make_pair
#define forr(X) for(int i = 0; i<X; i++)
#pragma GCC optimize("Ofast")
const int mod = 1999999973;
const int in = INT_MAX;
#define int ll
#define out(X) for(auto it: X){ for(auto ito : it)cout<<ito<<" "; cout<<endl;}

int32_t main(){
	freopen("lgput.out", "w", stdout);
	freopen("lgput.in", "r", stdin);
	int x, n; cin>>x>>n;
	vector<bool> nbin;
	while(n>0){
		nbin.pb(n%2);
		n/=2;
	}
	reverse(nbin.begin(), nbin.end());
	int res = 1;
	for(int i=0; i<nbin.size(); i++){
		res=(res*res)%mod;
		if(nbin[i]==1)res=(res*x)%mod;
	}
	cout<<res;
}