Pagini recente » Cod sursa (job #2216991) | Cod sursa (job #1272597) | Cod sursa (job #2040886) | Istoria paginii runda/fewfewd/clasament | Cod sursa (job #2437513)
#include <iostream>
#include <fstream>
using namespace std;
#include <vector>
vector<long long> reverse_number_on_bites(int number){
vector<long long> vec;
vec.resize(10000000);
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(int a, int b){
long int r = 1999999973;
int rezultat;
std::vector<long long> inter = reverse_number_on_bites(b);
int m = 1;
for(int i = 0; i < inter.size(); i++){
m = m * m;
if(inter[i] == 1){
m = m * a;
}
}
return m%r;
}
int main(){
std::ifstream fin("lgput.in");
std::ofstream fout("lgput.out");
long long rez, a, b;
fin >> a >> b;
rez = ridicare(a, b);
fout << rez <<'\n';
return 0;
}