Ответ: Исправление программы для степеней 7
Для $N = 49$ программа выведет 1. Подходящий пример — $N = 7$, при котором выводится правильное значение $K = 1$. Исправления на Python: `while n % 7 == 0:` вместо `while k % 7 == 0:`; `if n == 1:` вместо `if n > 0:`.
У этого задания официального ключа нет, поэтому ответ получен в разборе и с ключом не сверен. Перед тем как заучивать результат, пройдите выкладки — там видно, откуда взялось каждое число.
Дано целое положительное число $N$, не превосходящее 1000. Нужно написать программу, которая определяет, является ли это число степенью числа 7: выводит на экран либо такое целое число $K$, что $7^K = N$, либо сообщение «NO», если такого числа не существует.
Программист написал программу неправильно. Ниже приведена эта программа на языке Python:
n = int(input())
k = 0
while k % 7 == 0:
k = k + 1
n = n // 7
if n > 0:
print(k)
else:
print("NO")
Последовательно выполните следующие действия:
1. Напишите, что выведет эта программа при вводе числа 49.
2. Приведите пример числа, при вводе которого приведённая программа, несмотря на ошибки, выведет корректное существующее значение $K$.
3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки выпишите строку, в которой сделана ошибка, и правильный вариант этой строки.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно. Достаточно указать ошибки и способ их исправления для одного языка программирования. Требуется найти ошибки в имеющейся программе, а не написать другую программу, использующую иной алгоритм решения.
Где здесь ошибаются
Указывать для числа 49 вывод 2, не учитывая, что условие цикла проверяет переменную k.
Заменять только условие цикла и не исправлять проверку n после завершения цикла.
Использовать условие `if n == 0`, хотя при полном разложении степени 7 остаток равен 1.
Записывать новую программу вместо исправления ровно двух строк исходной программы.