Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 18 марта 2026 11:38

Напишите программу, которая в последовательности натуральных чисел определяет порядковый номер наименьшего числа, имеющего наибольшее количество цифр 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

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

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Напишите программу, которая в последовательности натуральных чисел определяет порядковый номер наименьшего числа, имеющего наибольшее количество цифр 7 в своём восьмеричном представлении. Нумерация членов в последовательности начинается с единицы. Программа получает на вход количество чисел, а затем сами числа. Известно, что в последовательности найдётся хотя бы одно число, имеющее хотя бы одну цифру 7 в своём восьмеричном представлен
Ниже подробное решение задачи и пример реализации на 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) ```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 Если хотите, могу адаптировать решение под другой язык программирования или привести более сложный пример.