Вам дан набор целых чисел размера n (он может содержать одинаковые элементы).
Вы должны найти поднабор чисел, где сумма чисел в поднаборе делится на n без остатка и
вывести индексы этих чисел в наборе. Если такого набора не существует, вывести −1
Формат входных данных:
В первой строке входных данных находится единственное целое число n (1 6 n 6 106) — размер
набора целых чисел.
Во второй строке входных данных находится n целых чисел a1, a2,...,an(0 6 ai 6 109) — элементы данного вам набора целых чисел.
Формат выходных данных:
Если ответа не существует — выведите −1.
Иначе выведите две строки.
В первой строке выходных данных выведите размер поднабора ответа.
Во второй строке выведите индексы чисел в наборе, которые входят в ответ. Выводить индексы
в любом порядке. Индексы в ответе не должны повторяться.
Если есть несколько таких поднаборов, то выведите любой.
Python
Приложения:
Ответы
Ответ дал:
1
def find_subset(n, arr):
s = sum(arr)
if s % n != 0:
return -1
target = s // n
for i, num in enumerate(arr):
if num == target:
return (1, [i + 1])
for i, num in enumerate(arr):
for j, other in enumerate(arr[i + 1:]):
if num + other == target:
return (2, [i + 1, j + i + 2])
return -1
n = int(input().strip())
arr = list(map(int, input().strip().split()))
result = find_subset(n, arr)
if result == -1:
print(-1)
else:
size, indices = result
print(size)
print(*indices)
Вас заинтересует
1 год назад
1 год назад
3 года назад
3 года назад
8 лет назад
8 лет назад