#1-27 номера ЕГЭ по информатике
March 29, 2023

12 Разбор номера 5419 ЕГЭ по информатике от 2023 года #12 

Условие КЕГЭ: Тип 12 № 2120

Условие Поляков: Тип 12 № 5419

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

НАЧАЛО
ПОКА нашлось(333) или нашлось(77777)
  ЕСЛИ нашлось(333)
    ТО заменить(333,77)
    ИНАЧЕ заменить(77777,7)
  КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Вариант 1: решение через замену строки

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

  1. создаем нашу строку
  2. ПОКА нашлась подстрока “333” или подстрока “77777” цикл while будет выполнять действия
  3. если нашлась подстрока “333”
  4. в таком случае заменим подстроку “333” на “77” именно 1 раз
  5. иначе
  6. в таком случае заменим подстроку “77777” на “7” именно 1 раз
  7. так как нужно сумму цифр в строке, а строка состоит из “7” и “3”, то мы выводим количество найденных цифр, умноженное на их значение
# Код решения Вариант 1
s = '3' * 70
while '333' in s or '77777' in s:
        if '333' in s:
            s = s.replace('333', '77', 1)
        else:
            s = s.replace('77777', '7', 1)
print(s.count('7') * 7 + s.count('3') * 3)

Вариант 2: решение через функцию

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

  1. создаем функцию, которая будет принимать и обрабатывать нашу строку
  2. ПОКА нашлась подстрока “333” или подстрока “77777” цикл while будет выполнять действия
  3. если нашлась подстрока “333”
  4. в таком случае заменим подстроку “333” на “77” именно 1 раз
  5. иначе
  6. в таком случае заменим подстроку “77777” на “7” именно 1 раз
  7. когда цикл заканчивается возвращаем полученную строку
  8. даем переменной s полученную строку
  9. так как нужно сумму цифр в строке, а строка состоит из “7” и “3”, то мы выводим количество найденных цифр, умноженное на их значение
# Код решения Вариант 2
def F(s):
    while '333' in s or '77777' in s:
        if '333' in s:
            s = s.replace('333', '77', 1)
        else:
            s = s.replace('77777', '7', 1)
    return s
s = F('3'* 70)
print(s.count('7') * 7 + s.count('3') * 3)

Вариант 3: решение через функцию для подсчёта суммы

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

1-5. объявляем функцию, которая принимает число и находит сумму всех его цифр

  1. создаем нашу строку
  2. ПОКА нашлась подстрока “333” или подстрока “77777” цикл while будет выполнять действия
  3. если нашлась подстрока “333”
  4. в таком случае заменим подстроку “333” на “77” именно 1 раз
  5. иначе
  6. в таком случае заменим подстроку “77777” на “7” именно 1 раз
  7. передаем переменной summa значение суммы цифр полученной строки
  8. и выводим её
# Код решения Вариант 3
def F(s):
    summa = 0
    for i in range(0, len(s)):
        summa += int(s[i])
    return summa

s = '3' * 70
while '333' in s or '77777' in s:
        if '333' in s:
            s = s.replace('333', '77', 1)
        else:
            s = s.replace('77777', '7', 1)
summa = F(s)
print(summa)

Ответ:

17