How does wrapping a working bisection-root loop in a function that returns its answer let you reuse it to brute-force a brand-new counting problem?
Short drills on what this video just taught. Write the code, run the checks, and reveal the answer only if you are stuck.
Bisection improves its guess by jumping to the midpoint of the current low and high endpoints. Wrap that single step in a function that returns the new guess (so a caller can reuse the value — don't print it).
Name the function next_guess and give it two inputs, low and high.