На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны.
Рассматриваются всевозможные непустые уникальные подмножества, состоящие из элементов последовательности. Необходимо определить количество различных множеств, длины 5.
Уникальным множеством считается то, что встречается один раз (то есть перестановки элементов внутри множества не делают его уникальным).
Пример входных данных:
Первая строка входного файла содержит число — общее количество чисел. Каждая из следующих
строк содержит натуральные числа, не превышающих 10 000.
Пример входного файла
5
5
10
15
91
33
Для указанных данных ответом будут являться {5, 10, 15, 91, 33}, то есть 1.
Решение 1
f = open(’27A.txt’)
n = int(f.readline())
nums = []
for i in range(n):
nums.append(int(f.readline()))
ans = []
for i in range(2**n):
t = i
mn = []
for j in range(n):
if t % 2 == 1:
mn.append(nums[j])
t //= 2
if len(mn) > 5:
break
if len(mn) == 5:
ans.append(mn)
print(len(ans))
Решение 2
from itertools import combinations
f = open(’27A.txt’)
n = int(f.readline())
nums = []
for i in range(n):
nums.append(int(f.readline()))
ans = []
for i in combinations(nums, 5):
ans.append(i)
print(len(ans))
Решение 3
f = open(’27A.txt’)
n = int(f.readline())
def factorial(m):
c = 1
for j in range(1, m + 1):
c *= j
return c
ans = 0
for i in range(1, n + 1):
ans += (factorial(20 - i) // ((factorial(4) * factorial(20 - i - 4))))
print(ans)