TestDrivenCode.com
Result

0.1714 s

Code
def find_two_missing(numbers: list[int], n: int) -> set[int]: # Sum of full range from 0..n-1 full_sum = (n * (n - 1)) // 2 given_sum = sum(numbers) missing_sum = full_sum - given_sum # a + b # Sum of squares of full range full_sq = (n - 1) * n * (2 * n - 1) // 6 given_sq = sum(x * x for x in numbers) missing_sq = full_sq - given_sq # a² + b² # a*b = [(a+b)² - (a²+b²)] / 2 prod = (missing_sum * missing_sum - missing_sq) // 2 # Solve quadratic: t² - (a+b)t + ab == 0 # discriminant = (a + b)² - 4ab D = missing_sum * missing_sum - 4 * prod root_D = int(D ** 0.5) while (root_D + 1) * (root_D + 1) <= D: root_D += 1 while root_D * root_D > D: root_D -= 1 a = (missing_sum - root_D) // 2 b = missing_sum - a return {a, b} # quick sanity checks if __name__ == "__main__": import random assert find_two_missing([], 2) == {0, 1} assert find_two_missing([0], 3) == {1, 2} assert find_two_missing([1], 3) == {0, 2} assert find_two_missing([2], 3) == {0, 1} assert find_two_missing([1, 2], 4) == {0, 3} assert find_two_missing([4, 2, 0], 5) == {1, 3} assert find_two_missing([0, 1, 2, 5], 6) == {3, 4} assert find_two_missing([5, 2, 1, 0], 6) == {3, 4} def test(): for n in range(2, 101): numbers = list(range(n)) random.shuffle(numbers) real_missing_numbers = {numbers.pop() for _ in range(2)} random.shuffle(numbers) missing_numbers = find_two_missing(numbers, n) assert real_missing_numbers == missing_numbers, f"Test failed for {n=}. Expected {real_missing_numbers}, got {missing_numbers} for {numbers=}" test() print("All tests passed!")