Pagini recente » Cod sursa (job #1784019) | Cod sursa (job #788366) | Cod sursa (job #1208148) | Cod sursa (job #1527345) | Cod sursa (job #2437542)
#include <iostream>
#include <fstream>
using namespace std;
#include <vector>
long long int r = 1999999973;
vector<int > reverse_number_on_bites(long long number){
vector<int> vec;
vec.resize(32);
for (int i = 0; i < vec.size(); i++){
vec[i] = 0;
}
int nr = -1;
while(number != 0){
if(number % 2 == 0){
vec[vec.size() -1 - (++nr)] = 0;
}else {
vec[vec.size() -1 - (++nr)] = 1;
}
number=number/2;
}
return vec;
}
long long ridicare(long long a, long long b){
std::vector<int > inter = reverse_number_on_bites(b);
long long m = 1;
for(int i = 0; i < inter.size(); i++){
m = (m * m)%r;
if(inter[i] == 1){
m = (m * a)%r;
}
}
return m;
}
int main(){
std::ifstream fin("lgput.in");
std::ofstream fout("lgput.out");
long long rez, a, b;
fin >> a >> b;
rez = ridicare(a, b)%r;
fout << rez <<'\n';
return 0;
}