Pagini recente » Cod sursa (job #2735376) | Cod sursa (job #2127839) | Cod sursa (job #751721) | Cod sursa (job #1207325) | Cod sursa (job #2437523)
#include <iostream>
#include <fstream>
using namespace std;
#include <vector>
vector<long int> reverse_number_on_bites(long int number){
vector<long int> vec;
vec.resize(10000);
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;
}
int ridicare(long int a, long int b){
long int r = 1999999973;
std::vector<long int> inter = reverse_number_on_bites(b);
int 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 int rez, a, b;
fin >> a >> b;
rez = ridicare(a, b);
fout << rez <<'\n';
return 0;
}