Шешімі: Анализ алгоритма с циклами
Ниже на четырёх языках программирования записан алгоритм. Получив на вход число $x$, этот алгоритм печатает два числа: $L$ и $M$. Укажите наибольшее число $x$, при вводе которого алгоритм печатает сначала 10, а потом 21.
Шешім по шагам
6 қадамПусть после первого цикла значение переменной $x$ равно $y$, а остаток после второго цикла — $r$. После первого цикла $y$ принимает значение от 101 до 110, а $K_1$ — количество прибавлений 10.
Во втором цикле из $y$ вычитают 6 до тех пор, пока не получится число $r$ от 0 до 5. Поэтому $y=6K_2+r$.
Так как алгоритм выводит $L=10$ и $M=21$, получаем:
$$r+K_1=10,\quad r+K_2=21$$Проверяем возможные значения остатка. При $r=4$: $K_2=17$, $y=6\cdot17+4=106$, $K_1=6$, поэтому исходное $x=106-6\cdot10=46$.
При $r=5$: $K_2=16$, $y=6\cdot16+5=101$, $K_1=5$, поэтому исходное $x=101-5\cdot10=51$.
Наибольшее из подходящих исходных значений — 51.
Где здесь ошибаются
Не учитывать, что первый цикл выполняется, пока $x\leq100$, поэтому после него значение превышает 100.
Перепутать количество прибавлений 10 с количеством вычитаний 6.
Искать только одно подходящее значение и не сравнить найденные значения $46$ и $51$.