На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых сумма элементов кратна
и некратна
.
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел в наборе. Каждая из следующих
строк содержит натуральное число, не превышающее
.
Пример входного файла:
Для указанных данных ответом будет являться .
def sol(k, data):
ans = [0] * k
for i in range(len(data)):
x = data[i]
ans_new = ans[:] # Аналог ans.copy()
# Подсчет ответа для уже существующих подмножеств
for i in range(k):
ans_new[(i + x) % k] += ans[i]
# Составление нового множества из одного числа x
ans_new[x % k] += 1
# Сохранение нового количества множеств
ans = ans_new[:]
return ans
f = open(’27A.txt’)
n = int(f.readline())
data = [int(f.readline()) for i in range(n)]
ans2 = sol(2, data)
ans6 = sol(6, data)
# Эквивалентные выводы
print(ans2[0] - ans6[0])
print(ans6[2] + ans6[4])
Ответ: 349440 422550200076076467165612474368