Найти в Дзене

Разбор номера 4317 ЕГЭ по информатике #5

Оглавление

Условие: № 4317 Пробный 06.2022 /dev/inf advanced (Уровень: Сложный)

Автомат обрабатывает натуральное число N по следующему алгоритму:

  1. Строится пятеричная запись числа N.
  2. К полученной записи дописываются разряды. Если последняя цифра в пятеричной записи четная, справа дописывается 2, если нечетная – слева дописывается 2 и справа 3.
  3. Результат переводится в десятичную систему и выводится на экран.

В результате работы автомата на экране появилось число, меньшее 1000. Для какого наибольшего значения N данная ситуация возможна?

-2
for n in range(1, 1000):
M = []
x = n

while x > 0:
M.append(x % 5)
x //= 5
M.reverse()

if M[-1] % 2 == 0:
M.append(2)
else:
M = [3] + M + [2]

s = ''.join([str(x) for x in M])
r = int(s, 5)

if r < 1000:
print(n)

Комментарии к первому варианту решения задачи:

  1. for n in range(1, 1000): - Используем цикл for для перебора всех значений от 1 до 999, присваивая каждое значение переменной n.
  2. M = [] - Создаем пустой список M.
  3. x = n - Копируем значение переменной n в переменную x.
  4. while x > 0: - Запускаем цикл while, который будет выполняться, пока значение переменной x больше 0.
  5. M.append(x % 5) - Добавляем остаток от деления значения переменной x на 5 в конец списка M.
  6. x //= 5 - Делаем целочисленное деление значения переменной x на 5 и присваиваем результат переменной x.
  7. M.reverse() - Разворачиваем список M в обратном порядке.
  8. if M[-1] % 2 == 0: - Проверяем, является ли последний элемент списка M четным числом.
  9. M.append(2) - Если последний элемент списка M четный, добавляем число 2 в конец списка M.
  10. else: - Если условие из строки 8 ложно.
  11. M = [3] + M + [2] - Присваиваем переменной M список, который состоит из числа 3, содержимого списка M и числа 2.
  12. s = ''.join([str(x) for x in M]) - Создаем строку s, объединяя все элементы списка M в строку, преобразуя их в строки.
  13. r = int(s, 5) - Преобразуем строку s в целое число, используя систему счисления 5, и присваиваем результат переменной r.
  14. if r < 1000: - Проверяем, является ли значение переменной r меньше 1000.
  15. print(n) - Если условие из строки 14 истинно, выводим значение переменной n.
-3
def system(x):
s = ''
while x > 0:
s += str(x % 5)
x //= 5
return s[::-1]

for n in range(1, 1000):
s = system(n)

if int(s[-1]) % 2 == 0:
s += '2'
else:
s = '2' + s + '3'

r = int(s, 5)

if r < 1000:
print(n)

Комментарии ко второму варианту решения задачи:

  1. def system(x): - Здесь мы определяем функцию system, которая переводит из десятичной записи числа в пятеричную.
  2. for n in range(1, 1000): - Запускаем цикл for, который проходит через числа от 1 до 999.
  3. s = system(n) - Вызываем функцию system для числа n и сохраняем результат в переменной s. Это дает нам представление числа n в пятеричной системе исчисления в виде строки.
  4. if int(s[-1]) % 2 == 0:- Проверяем, является ли последний символ строки s четной цифрой.
  5. s += '2' - Если последний символ строки s четный, добавляем символ '2' в конец строки.
  6. else: - Если последний символ строки s нечетный, то
  7. s = '2' + s + '3' - добавляем символ '2' в начало строки, затем добавляя содержимое исходной строки s и, наконец, символ '3' в конец строки.
  8. r = int(s, 5) - Преобразуем строку s в целое число, интерпретируя ее как число в пятеричной системе исчисления.
  9. if r < 1000: - Проверяем, является ли число r меньшим 1000.
  10. print(n) - Если число r меньше 1000, выводим значение n.

Ответ: 199

Информатика ЕГЭ | itpy 👨‍💻

Присоединяйтесь и готовьтесь вместе с нами: https://t.me/+SIliQTddHE8xNTk6
Присоединяйтесь и готовьтесь вместе с нами: https://t.me/+SIliQTddHE8xNTk6