Шешімі: Минимальное значение переменной
Определите, при каком наименьшем введённом значении переменной $s$ программа выведет число 8. Для Вашего удобства программа представлена на четырёх языках программирования.
1s = int(input()) 2s = (s - 21) // 10 3n = 1 4while s >= 0: 5 n = n * 2 6 s = s - n 7print(n)
Шешім по шагам
4 қадамОбозначим через $s_0$ значение переменной после целочисленного деления. В начале цикла $n = 1$.
$$s_0 = (s - 21) // 10$$На первой итерации переменная $n$ принимает значение 2, на второй — 4, на третьей — 8. Чтобы цикл выполнился три раза, перед третьей итерацией должно быть $s_0 - 2 - 4 \geq 0$.
$$s_0 \geq 6$$После третьей итерации из $s_0$ вычитается 8. Чтобы четвёртая итерация не выполнялась, необходимо $s_0 - 2 - 4 - 8 < 0$, то есть $s_0 < 14$.
$$6 \leq s_0 < 14$$Для наименьшего входного значения достаточно найти минимальное $s$, при котором $(s - 21) // 10 \geq 6$.
$$(s - 21) // 10 \geq 6 \Rightarrow s - 21 \geq 60 \Rightarrow s \geq 81$$Где здесь ошибаются
Забывают, что значение $n$ изменяется до вычитания из переменной $s$.
Считают, что для вывода 8 цикл должен выполниться төрт раза.
Не учитывают целочисленное деление при преобразовании исходного значения $s$.