Разбор 12.PNG

Тип 12 №39241

Дана программа для редактора:

ПОКА нашлось (111) ИЛИ нашлось (222)

заменить (111, 22)

заменить (222, 1)

КОНЕЦ ПОКА

Известно, что исходная строка содержала больше 200 единиц и не содержала других цифр, а после выполнения программы получилась строка, содержащая только двойки. Какое наименьшее количество единиц могло быть в исходной строке?

Untitled

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

  1. for n in range(201, 1000): - Просто пробегаем числа большие 200.
  2. s = '1' * n - Создание строки, состоящей из n символов '1'.
  3. while '111' in s or '222' in s: - Запускаем цикл, пока в строке есть подстроки '111' или '222'.
  4. s = s.replace('111', '22', 1) - Заменяем первую найденную подстроку '111' на '22'.
  5. s = s.replace('222', '1', 1) - Заменяем первую найденную подстроку '222' на '1'.
  6. if len(s) == s.count('2'): - Проверка: если длина строки равна количеству символов '2' (строка содержащая только двойки).
  7. print(n) - Выводим найденное числа n (кол-во единиц в исходной строке).
  8. break - Прерываем выполнения цикла.
for n in range(201, 1000):
    s = '1' * n
    while '111' in s or '222' in s:
        s = s.replace('111', '22', 1)
        s = s.replace('222', '1', 1)
    if len(s) == s.count('2'):
        print(n)
        break

Ответ:

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

Untitled

Автор статьи: @ilandroxxy