Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3607361
А
Аноним
27 апреля 2026 11:23 · публичный вопрос
А
Аноним

Задача 3 (сколько самых длинных слов) Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП. Есть последовательность фамилий учеников.…

Запрос пользователя

Задача 3 (сколько самых длинных слов) Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП. Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП. Выведи количество фамилий наибольшей длины.

Ответ нейросети
27 апреля 2026 11:23

Вот подробное решение задачи.

Цель задачи

  • Нужно прочитать последовательность фамилий до слова СТОП и определить, сколько фамилий имеют наибольшую (максимальную) длину.

Пошаговый алгоритм

  1. Инициализация:
    • max_len = 0 (максимальная встречавшаяся длина)
    • count = 0 (число фамилий с такой длиной)
  2. Для каждой введённой фамилии w до достижения слова "СТОП":
    • Длина текущей фамилии: l = длина(w)
    • Если l > max_len:
      • max_len = l
      • count = 1 Иначе, если l == max_len:
      • count += 1 Иначе (l < max_len): ничего не меняем
  3. Как только встретили "СТОП", вывести count.
  4. Особый случай: если перед словом "СТОП" не было ни одной фамилии, вывести 0.

Смысл решения

  • Мы поддерживаем текущую максимальную длину и количество фамилий, имеющих эту длину. Когда встречаем более длинную фамилию, сбрасываем счётчик до 1. Когда встречаем фамилию той же длины, увеличиваем счётчик. В конце — искомое количество.

Сложность

  • Время: On, где n — количество фамилий до СТОП.
  • Память: O(1) дополнительно.

Пример Ввод: Иванов Петров Кузнецов Иванов Степанов СТОП

  • Иванов: 6 -> max_len=6, count=1
  • Петров: 6 == max_len -> count=2
  • Кузнецов: 8 > max_len -> max_len=8, count=1
  • Иванов: 6 < max_len -> ничего
  • Степанов: 8 == max_len -> count=2
  • СТОП: завершаем

Вывод: 2

Готовый код на Python (для иллюстрации; можно адаптировать под ваш язык/среду) def count_max_surnames(words): max_len = 0 count = 0 for w in words: if w == "СТОП": break l = len(w) if l > max_len: max_len = l count = 1 elif l == max_len: count += 1 return count

Если хочешь, могу привести решение под конкретный язык программирования или привести дополнительные примеры.