Теперь у вас есть 2 вопроса к сообщению:
- Как мне решить алгоритм?
Photon
ссылка охватывает это хорошо. - Почему не работает GCD?
GCD является необходимым, но не достаточным условием.
Верно, если a = b, то (x, y) достижимотогда и только тогда, когда GCD (x, y) = a = b.Однако это не распространяется на все проблемные пары.Тривиальный контрпример пытается достичь (1, N) из (N, 1), где N> 1.Другой (2, 3) => (4, 5).
Итак, давайте перейдем к качественной части: «Я не могу понять ...».Я подозреваю, что проблема в том, что вы видите сходство между алгоритмом Евклида и вашим шагом добавления.Более того, алгоритм «назад» в ссылке предполагает применение алгоритма Евклида.
Он может, в некотором смысле, но не так просто и универсально, как вы пытались его использовать.Думайте о проблеме как о графике на целочисленной решетке в декартовой плоскости.Разрешенные операции (направленные ребра) определяют, как вы можете перемещаться из одной точки в другую.
Ключевой термин здесь направлен : как только вы «переместились» из начальной точки в однукоторый определяет GCD в вашей системе, вы не имеете свободу повторять эти шаги.Вы перемещаетесь либо вперед или назад через пространство графика.
Например, хотя ваши обратные переходы позволяют вам переходить от (4, 1) к (1, 1) или от (1, 4) к (1, 1), вы не можете использовать это, чтобы завершить путь от (4, 1) до (1, 4): половина этих движений в направлении не разрешена.
Это помогает рассеять путаницу?