Предмет: Информатика,
автор: likanstandoff
Вам дан набор целых чисел размера n (он может содержать одинаковые элементы). Вы должны найти поднабор чисел, где сумма чисел в поднаборе делится на n без остатка и вывести индексы этих чисел в наборе. Если такого набора не существует, вывести −1
Ответы
Автор ответа:
0
Ответ:
nums = [1, 2, 3, 4, 5, 6]
n = 3
result = [-1]
for i in range(len(nums)):
for j in range(i, len(nums)):
subset = nums[i:j+1]
if sum(subset) % n == 0:
result = [i+1 for i in range(i, j+1)]
print(result)
break
if result != [-1]:
break
if result == [-1]:
print(result)
Объяснение:
Код перебирает все возможные подсписки данного списка целых чисел, проверяет, делится ли сумма текущего подсписка на n, используя оператор модуля (%), если это так, он сохранит индексы из элементов подсписка и распечатайте их. Если такой подсписок не найден, он выведет [-1].
Это решение имеет временную сложность O (n ^ 2), потому что мы используем вложенные циклы для перебора всех возможных подмножеств.
Похожие вопросы
Предмет: История,
автор: cupiwax998
Предмет: Алгебра,
автор: marinemkhoyan2007
Предмет: История,
автор: sonikponomarenko265
Предмет: Математика,
автор: xop1990
Предмет: Математика,
автор: anyakubarenko