Что нужно понимать
Самый надёжный способ решать такие задачи — трассировочная таблица. Записывай значения переменных после каждой итерации и не выполняй «лишний» проход цикла.
Цикл
Условие проверяется перед каждой итерацией.
Ветвление
Выполняется только подходящая ветвь.
Трассировка
Последовательная фиксация состояния переменных.
Если после тела цикла условие стало ложным, следующая итерация уже не начинается. Именно здесь часто появляется ошибка «на один шаг».