Найти тему
Практика Python

Решаем логически олимпиадную задачу по информатике

Условие:

По одну сторону улицы находятся дома с нечётными номерами (1, 3, 5, …), по другую сторону – с чётными (2, 4, 6, …). Дом № 1 находится напротив дома № 2, дом № 3 – напротив дома № 4 и т. д. До соседнего дома нужно идти вдоль по улице одну минуту, неважно, с какой стороны улицы он находится (то есть от дома № 1 нужно идти одну минуту как до дома № 3, так и до дома № 4). До дома, стоящего напротив, идти не нужно.
Определите, сколько минут ему нужно идти вдоль по улице. Программа получает на вход два различных целых положительных числа A и B. Программа должна вывести одно число – искомое количество минут.
картинка-пояснение из условия задачи
картинка-пояснение из условия задачи

Логика решения задачи:

1. Так как неважно, пойдет ли человек от четного дома или от нечетного, стоящего напротив заданного, сразу во избежании путаницы в дальнейшем мы проверим введенные пользователем цифры на четность и если они нечетны - итерируем их.

2. Теперь пользователь всегда будет находится на четной стороне улицы. Далее методом подбора смотрим:

Из дома 2 до дома 4 идти 1 минуту;

Из дома 2 до дома 6 идти 2 минуты;

Из дома 2 до дома 8 идти 3 минуты.

Т.е. всегда выполняется условие: Отнять от одной цифры вторую и результат разделить на два. Для того случая, если пользователь пойдет от дома с большим номером, к дому с меньшим номером - вычислять будем по модулю.

Решение:

Проверяем введенные пользователем цифры и если нужно итерируем их:

проверка на четность - код
проверка на четность - код

получим:

проверка на четность - вывод
проверка на четность - вывод

Выводим ответ на экран:

решение - код
решение - код

в итоге:

решение - вывод
решение - вывод

Заметим, что приведение к целому числу в строке 9 - обязательно, иначе ответ будет дробным 2,0 - и ответ вам не зачтут:

решение - неправильный вывод
решение - неправильный вывод

Читайте и другие наши статьи.

-7