Предмет: Информатика, автор: likanstandoff

Вам дан набор целых чисел размера n (он может содержать одинаковые элементы). Вы должны найти поднабор чисел, где сумма чисел в поднаборе делится на n без остатка и вывести индексы этих чисел в наборе. Если такого набора не существует, вывести −1​

Ответы

Автор ответа: mrgoldenbroerrormine
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), потому что мы используем вложенные циклы для перебора всех возможных подмножеств.

Похожие вопросы
Предмет: История, автор: sonikponomarenko265