Задача к ЕГЭ по информатике на тему «Программирование – оптимизация по времени и по памяти» №3

Дано число N  , зачем N  чисел. Нужно найти количество подмножеств, сумма элементов которых не делится на 3  .

from math import comb

f = open(’3.txt’)
n = int(f.readline())
ans = 0
k = [0, 0, 0]

for i in range(n):
    x = int(f.readline())
    k[x % 3] += 1

s2 = [0, 0, 0]
for i in range(3):
    for j in range(i, k[2] + 1, 3):
        s2[i] += comb(k[2], j)

s1 = [0, 0, 0]
for i in range(3):
    for j in range(i, k[1] + 1, 3):
        s1[i] += comb(k[1], j)
ans = s1[0] * s2[0] + s1[1] * s2[1] + s1[2] * s2[2]
ans = ans * 2 ** k[0]

mn = 0  # количество всех множеств
for i in range(n + 1):  # с 0, так как существует пустое множество
    mn += comb(n, i)

print(mn - ans)

Ответ: 845100400152152934147883532288
Оцените статью
Я решу все!