from collections import deque from math import log2, log import numpy as np from random import random class DiffSolveTime: def __init__(self, p: int, q: int): self.__p = p self.__q = q def diff_solve_time(self, n: int | float) -> float: return n ** 2 - self.__p - self.__q * n * log2(n) def diff_solve_time_derived(self, n: int | float) -> float: return n * 2 - self.__q * log2(n) - self.__q / log(2) def diff2_solve_time_derived(self, n: int | float) -> float: return 2 - self.__q / (n * log(2)) def get_inflection(self) -> float: return self.__q / (2*log(2)) def main(): P, Q = map(int, input().split()) solver = DiffSolveTime(P, Q) N = 1e2 ans_deque = deque(maxlen=2) while solver.diff_solve_time(N) < 0: N *= 10 counter = 0 while abs(solver.diff_solve_time(N)) > 1e-6 and counter < 5: if N in ans_deque: N = np.mean(ans_deque) counter += 1 continue ans_deque.append(N) N -= (solver.diff_solve_time(N) / solver.diff_solve_time_derived(N)) print(N) if __name__ == "__main__": main()