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

Напишите программу, которая в последовательности натуральных чисел определяет порядковый номер наименьшего числа, имеющего наибольшее количество цифр 7 в своём восьмеричном…

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

Напишите программу, которая в последовательности натуральных чисел определяет порядковый номер наименьшего числа, имеющего наибольшее количество цифр 7 в своём восьмеричном представлении. Нумерация членов в последовательности начинается с единицы. Программа получает на вход количество чисел, а затем сами числа. Известно, что в последовательности найдётся хотя бы одно число, имеющее хотя бы одну цифру 7 в своём восьмеричном представлен

Ответ нейросети
18 марта 2026 11:38

Ниже подробное решение задачи и пример реализации на Python.

Цель задачи

  • Среди заданных чисел найти те, у которых в их восьмеричном представлении наибольшее количество цифр 7.
  • Среди таких чисел выбрать наименьшее по значению число и вернуть его порядковый номер (позицию) в последовательности (нумерация начинается с 1).

Пояснение по шагам

  1. Для каждого числа вычисляем количество цифр 7 в его восьмеричном представлении.
    • Преобразование в восьмеричное можно сделать через oct(n) и взять строковую часть без префикса '0o'.
    • Считаем, сколько символов '7' встречается в этой строке.
  2. В процессе обхода массива чисел следим за:
    • current_max – текущее наибольшее количество 7 в октальном представлении.
    • best_value – минимальное число среди тех, что имеют current_max 7.
    • best_index – индекс (позицию) этого минимального числа.
  3. При каждом числе:
    • Если its count of 7 > current_max, обновляем current_max, best_value, best_index.
    • Если its count == current_max и число меньше best_value, обновляем best_value и best_index (чтобы выбрать минимальное число).
    • Если число равно по значению существующему лучшему, можно оставить текущий индекс (это не влияет на требование выбрать минимальное число).
  4. В конце выводим best_index.

Сложность

  • Пусть n — количество чисел. Дополнительная работа пропорциональна суммарной длине восьмеричных представлений чисел. В целом временем O(n * d), где d — средняя длина октального представления, что для типичных входных данных очень разумно.

Пример реализации (Python)

import sys

def count_sevens_in_octal(n: int) -> int:
    # oct(n) возвращает строку вроде '0o123'; берем без префика '0o'
    return str(oct(n))[2:].count('7')

def main():
    data = list(map(int, sys.stdin.read().strip().split()))
    if not data:
        return
    m = data[0]
    arr = data[1:1 + m]

    best_count = -1
    best_value = None
    best_index = -1

    for idx, x in enumerate(arr, start=1):
        c = count_sevens_in_octal(x)
        if c > best_count:
            best_count = c
            best_value = x
            best_index = idx
        elif c == best_count:
            if best_value is None or x < best_value:
                best_value = x
                best_index = idx

    print(best_index)

if __name__ == "__main__":
    main()

Пример теста

  • Вход: 5 7 8 63 55 14
  • Объяснение:
    • 7 в octal = 7, количество 7 = 1
    • 8 в octal = 10, количество 7 = 0
    • 63 в octal = 77, количество 7 = 2
    • 55 в octal = 67, количество 7 = 1
    • 14 в octal = 16, количество 7 = 0 Максимальное количество 7 равно 2 и достигается числом 63 (единственное такое число). Его индекс — 3.
  • Вывод: 3

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