РУҚА
24

Шешімі: Исправление программы на Python

ЕГЭ · Информатика · Тапсырма 24 · Санау жүйелері
ЖоғарыФИПИD479DBТолық шешім≈ 15 минутТалдау 6 қадам
Условие

Дано целое положительное число $N$, не превосходящее 1000. Нужно написать программу, которая определяет, является ли это число степенью числа 4: выводит на экран либо такое целое число $K$, что $4^K = N$, либо сообщение «NO», если такого числа не существует.

Для решения этой задачи ученик написал программу, но его программа оказалась неверной. Ниже приведена эта программа на языке Python:

```python
n = int(input())
k = 0
while k % 4 == 0:
k = k + 1
n = n // 4
if n <= 4:
print(k)
else:
print("NO")
```

Последовательно выполните следующие действия: определите результат работы программы при вводе числа 16; приведите пример числа, при вводе которого программа, несмотря на ошибки, выведет корректное существующее значение $K$; найдите допущенные ошибки и исправьте их. Исправление каждой ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки выпишите исходную строку и правильный вариант этой строки. Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно.

Тапсырманы ашып, өзіңіз шешіңіз
Дальше ответЕгер әлі шешіп жатсаңыз – кеңестерден бастаңыз: олар жауапқа жетелейді, бірақ оны ашпайды.
К подсказкам

Шешім по шагам

6 қадам
1

В начале работы программы $k = 0$, поэтому условие цикла `k % 4 == 0` истинно. После первой итерации $k$ становится равным 1, а $n$ при входном значении 16 становится равным 4.

$$16 // 4 = 4$$
2

После первой итерации условие `k % 4 == 0` становится ложным, поскольку $1 \bmod 4 = 1$. Цикл завершается.

3

Проверка `n <= 4` истинна, поэтому программа выводит число 1.

$$1$$
4

При вводе $N = 4$ программа также выполняет цикл один раз, получает $k = 1$ и $n = 1$, а затем выводит 1. Это корректно, так как $4^1 = 4$.

5

Первая ошибка находится в условии цикла: проверяется переменная $k$, хотя нужно проверять, делится ли текущее значение $n$ на 4.

$$n \bmod 4 = 0$$

Вторая ошибка находится в условии вывода. После последовательного деления на 4 исходное число является степенью 4 только тогда, когда остаток равен 1, поэтому нужно проверять `n == 1`.

Жауап

Для N = 16 программа выведет 1. Пример числа: N = 4. Исправления: `while n % 4 == 0:` и `if n == 1:`.

Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.

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

Указать для N = 16 вывод 2, не проследив работу именно ошибочной программы.

Исправить только условие цикла и оставить проверку `n <= 4`.

Предложить новую программу вместо исправления ровно двух строк.

Считать число степенью 4 при любом остатке, отличном от нуля, вместо проверки итогового значения `n == 1`.

Закрепить приёмВ теме «Санау жүйелері» ещё 126 тапсырма — жауабымен және дәл осындай талдауымен.
Жаттығу

Тапсырманы қалай шешу керек 24 ЕГЭ, информатика

Бұл есептің талдауы келесіге бөлінген: 6 шагов: видно, откуда берётся каждое число и где теряется балл. Жауап есептеулердің жанында келтірілген, олардың орнына емес.

Задача из темы «Системы счисления»: в ней 127 задач, и у каждой есть такой же разбор. Тіркеу қажет емес.