6

Решение: Минимальное значение переменной

ЕГЭ · Информатика · Задание 6 · Основы программирования
ПовышеннаяФИПИA36D19Короткий ответ≈ 4 минутыРазбор в 4 шагаОтвет сверен с ключом
Условие

Определите, при каком наименьшем введённом значении переменной $s$ программа выведет число 16. Для Вашего удобства программа представлена на четырёх языках программирования.

Python
1s = int(input())
2s = (s + 21) // 10
3n = 1
4while s > 0:
5    s = s - n
6    n = n * 2
7print(n)
Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

4 шага
1

Переменная $n$ принимает значения $1, 2, 4, 8, 16, \ldots$. Чтобы программа вывела 16, цикл должен выполниться ровно четыре раза.

$$1 \to 2 \to 4 \to 8 \to 16$$
2

Пусть после первого присваивания значение переменной $s$ равно $t$. За четыре выполнения цикла из него вычитается сумма $1+2+4+8=15$.

$$t \to t-1 \to t-3 \to t-7 \to t-15$$
3

Чтобы цикл выполнился четыре раза, после третьей итерации значение $s$ должно быть положительным, а после четвёртой — неположительным. Поэтому $8 \leq t \leq 15$.

$$t-7>0,\quad t-15\leq 0$$

Ищем наименьшее исходное значение $s$. Для минимального значения $t=8$ получаем $\lfloor (s+21)/10 \rfloor=8$, откуда $s+21\geq 80$ и $s\geq 59$.

$$s=80-21=59$$
Ответ
59
59
так ответ выглядит в бланке

Где здесь ошибаются

Учитывают только сумму вычитаемых значений и забывают проверить условие продолжения цикла.

Ошибочно считают, что для получения 16 цикл должен выполниться пять раз.

Не учитывают целочисленное деление при вычислении значения $(s+21) // 10$.

Закрепить приёмВ теме «Основы программирования» ещё 159 задач — с ответом и таким же разбором.
Тренироваться

Как решать задание 6 ЕГЭ, информатика

Разбор этой задачи разложен на 4 шага: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Основы программирования»: в ней 160 задач, и у каждой есть такой же разбор. Регистрация не нужна.