Codeforces/791/a.cpp

78 lines
1.1 KiB
C++
Raw Normal View History

#include <iostream>
namespace {
using namespace std;
long pow(long base, long exp) {
if (exp == 0) return 1;
long half = pow(base, exp / 2);
if (exp % 2 == 0) return half * half;
return half * half * base;
}
int find_k(int a, int b) {
int lower = 1;
int upper = 7;
while (lower <= upper) {
int mid = (lower + upper) / 2;
int new_a = a * pow(3, mid);
int new_b = b * pow(2, mid);
if (new_a <= new_b) {
lower = mid + 1;
} else {
upper = mid - 1;
}
}
return lower;
}
void solve() {
int a, b;
cin >> a >> b;
cout << find_k(a, b) << "\n";
}
} // namespace
// for single test case, comment out for N test cases
#define SINGLE
#ifndef TEST
int main(void) {
#ifdef SINGLE
solve();
#else
// for multiple test cases
int N;
std::cin >> N >> std::ws;
for (auto i = 0; i < N; ++i) {
solve();
}
#endif
return 0;
}
#else
#include "../.common/cpp/catch_amalgamated.hpp"
TEST_CASE("examples") {
CHECK(find_k(4, 7) == 2);
CHECK(find_k(4, 9) == 3);
CHECK(find_k(1, 1) == 1);
}
#endif