Author
Result
0.1542 s
Code
def find_two_missing(numbers: list[int], n: int) -> set[int]:
total_sum = n * (n - 1) // 2
arr_sum = sum(numbers)
missing_sum = total_sum - arr_sum
total_sq_sum = (n - 1) * n * (2 * (n - 1) + 1) // 6
arr_sq_sum = sum(x * x for x in numbers)
missing_sq_sum = total_sq_sum - arr_sq_sum
# Let the two missing numbers be a and b
# a + b = missing_sum
# a^2 + b^2 = missing_sq_sum
# (a + b)^2 = a^2 + b^2 + 2ab
# ab = (missing_sum^2 - missing_sq_sum) / 2
ab = (missing_sum * missing_sum - missing_sq_sum) // 2
# Solve for a and b using quadratic equation derived from:
# x^2 - (a + b)x + ab = 0
# x^2 - missing_sum * x + ab = 0
# Discriminant = missing_sum^2 - 4 * ab
discriminant = missing_sum * missing_sum - 4 * ab
a = (missing_sum + discriminant ** 0.5) // 2
b = missing_sum - a
return {int(a), int(b)}