Предположим, что у меня есть простое уравнение вида:
7x + 4y = n
где n выбрано нами, а x, y и n - целые положительные числа. Это единственное уравнение, которое дается нам. Среди возможных решений нам нужно решение (x, y), в котором x является наименьшим. например.
7x + 4y = 14, then (2, 0) is the solution
7x + 4y = 15, then (1, 2) is the solution
7x + 4y = 32, then (4, 1) and (0, 8) are the possible solutions,
of which (0, 8) is the correct solution
Я хотел бы разработать алгоритм для вычисления его в наименьшее возможное время работы. Текущий алгоритм, который я имею в виду, выглядит примерно так:
Given an input n
Calculate max(x) = n/7
for i = 0 to max(x)
If the equation 7*i + 4*y = n holds
return value of i and y
else
continue
Этот алгоритм, я полагаю, может иметь время работы до O (n) в худшем случае. Есть ли лучший алгоритм для вычисления решения?