27.07 Прочие прототипы
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Шестиклассник Коля совсем недавно узнал, что такое НОД и НОК — наибольший общий делитель и наименьшее общее кратное некоторого набора натуральных чисел. Ему так понравилась эта тема, поэтому он решил потренироваться и в случайном порядке начал выписывать на доску от до натуральных чисел в строчку и попарно начал находить для них НОКи. Его друг Ваня предложил Коле следующую задачу: из каждой строки нужно выбрать один из НОКов, причем так, чтобы их сумма была наибольшей, а также кратна или .
В ответе укажите два числа: сначала искомое значение для файла А, затем для файла B.
Формат входных данных
Первая строка входных данных содержит число n — количество строк, . Следующие строк содержат натуральное число , обозначающее количество чисел в строке, затем натуральных чисел в этой строке.
Формат выходных данных
Программа должна вывести целое число — максимальную сумму, кратную или .
Пример:
Ответом для примера будет:
Рассмотрим пример из условия. Для указанных входных данных значения НОК для первой строки — ; для второй строки — для третьей группы — , для четвёртой группы — Значением искомой суммы должно быть число .
def gcd(a, b): if b == 0: return a return gcd(b, a % b) def lcm(a, b): return (a*b)//gcd(a, b) def h(x, m, m_new): for j in range(88): ost = (m[j]+x) % 88 if (m[j]+x > m_new[ost]): m_new[ost] = m[j]+x f = open(’Задание 27 B.txt’) m = [-1000000]*88 m[0] = 0 n = int(f.readline()) for i in range(n): a = [int(p) for p in f.readline().split()] k = a[0] b = [] for i in range(1, len(a)): for j in range(i+1, len(a)): b.append(lcm(a[i], a[j])) m_new = [-10000000]*88 for x in b: h(x, m, m_new) for j in range(88): m[j] = m_new[j] ans = -10000000 for r in range(88): if r % 8 == 0 or r % 11 == 0: ans = max(ans, m[r]) print(ans)
Ошибка.
Попробуйте повторить позже
Дана строка .
Рассматриваются всевозможные непустые уникальные подмножества, состоящие из букв строки. Необходимо распечатать всевозможные множества, состоящие из букв в порядке возрастания (т.е. в порядке возрастания букв во множестве; подмножества одинаковой длины сортировать по алфавиту).
Уникальным множеством считается то, что встречается один раз (то есть перестановки элементов внутри множества не делают его уникальным).
В качестве ответа укажите всевозможные множества в одной строке через пробел.
Решение 1
n = 3 s = ’ABC’ ans = [] for i in range(2**n): t = i mn = ’’ for j in range(n): if t % 2 == 1: mn += s[j] t //= 2 if len(mn) > 0: ans.append(mn) print(*sorted(ans, key = lambda x: len(x)))
Решение 2
from itertools import combinations n = 3 s = ’ABC’ ans = [] for j in range(1, 4): for i in combinations(s, j): ans.append(’’.join(i)) print(*ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны.
Рассматриваются всевозможные непустые уникальные подмножества, состоящие из элементов последовательности. Необходимо определить количество различных множеств.
Уникальным множеством считается то, что встречается один раз (то есть перестановки элементов внутри множества не делают его уникальным).
Пример входных данных:
Первая строка входного файла содержит число — общее количество чисел. Каждая из следующих N строк содержит натуральные числа, не превышающих 10 000.
Пример входного файла
3
5
10
15
Для указанных данных ответом будут являться {5}, {10}, {15}, {5, 10}, {5, 15}, {10, 15}, {5, 10, 15}, то есть 7.
Решение 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) > 0: 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 j in range(1, 21): for i in combinations(nums, j): ans.append(i) print(len(ans))
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны.
Рассматриваются всевозможные непустые уникальные подмножества, состоящие из элементов последовательности. Необходимо определить количество различных множеств, длины 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)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны.
Рассматриваются всевозможные непустые уникальные подмножества, состоящие из элементов последовательности. Необходимо определить количество различных множеств, длины 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)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из N натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых сумма элементов кратна 2.
Пример входных данных:
Первая строка входного файла содержит число N – общее количество чисел. Каждая из следующих N строк содержит натуральные числа, не превышающих 10 000.
Пример входного файла
3
2
10
5
Для указанных данных ответом будут являться {2}, {10}, {2, 10}, то есть 3.
Решение 1
f = open(’27A.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) ans = 0 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) > 0: if sum(mn) % 2 == 0: ans += 1 print(ans)
Решение 2
f = open(’27A.txt’) n = int(f.readline()) k = 2 ans = [0] * k for i in range(n): x = int(f.readline()) ans_new = ans[:] # Аналог ans.copy() for j in range(k): ans_new[(j + x) % k] += ans[j] ans_new[x % k] += 1 ans = ans_new[:] print(ans[0])
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств длины 3, в которых сумма элементов кратна 3.
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел. Каждая из следующих строк содержит натуральные числа, не превышающих 10 000.
Пример входного файла
3
1
2
3
Для указанных данных ответом будет являться, {1, 2, 3}, то есть 1.
Решение 1
f = open(’27A.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) ans = 0 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) == 3: if sum(mn) % 3 == 0: ans += 1 print(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 = 0 for i in combinations(nums, 3): if sum(i) % 3 == 0: ans += 1 print(ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых есть хотя бы одно простое число. Простым числом является то, которое делится только на себя и на 1. Также 1 не является простым числом.
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел. Каждая из следующих строк содержит натуральные числа, не превышающих 10 000.
Пример входного файла
3
2
4
6
Для указанных данных ответом будет являться, {2}, {2, 4}, {2, 6}, {2, 4, 6}, то есть 4.
Решение 1
def prime(x): if x == 1: return False for i in range(2, int(x**0.5)+1): if x % i == 0: return False return True f = open(’27A.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) ans = 0 for i in range(2**n): t = i mn = [] for j in range(n): if t % 2 == 1: mn.append(nums[j]) t //= 2 for x in mn: if prime(x): ans += 1 break print(ans)
Решение 2
from itertools import combinations def prime(x): if x == 1: return False for i in range(2, int(x**0.5)+1): if x % i == 0: return False return True f = open(’27A.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) ans = 0 for j in range(1, n+1): for i in combinations(nums, j): for x in i: if prime(x): ans += 1 break print(ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны.
Рассматриваются все возможные непустые уникальные подмножества, состоящие из элементов последовательности. Необходимо определить количество различных множеств, в которых присутствует число .
Уникальным множеством считается то, что встречается один раз (то есть перестановки элементов внутри множества не делают его уникальным).
Пример входных данных:
Первая строка входного файла содержит число — общее количество чисел. Каждая из следующих N строк содержит натуральные числа, не превышающих .
Пример входного файла
Если требуется посчитать кол-во множеств, где присутствует .
3
5
10
15
Для указанных данных ответом будут являться , то есть .
f = open(’27.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) count = 0 subsets = set() for i in range(1, 2**n): # i = 0 нам не подходит, так как задает пустое подмножество t = i mn = [] for j in range(n): if t % 2 == 1: mn.append(nums[j]) t //= 2 if 233 in mn and tuple(sorted(mn)) not in subsets: count += 1 subsets.add(tuple(sorted(mn))) print(count)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны.
Рассматриваются все возможные непустые уникальные подмножества, состоящие из элементов последовательности. Необходимо определить количество различных множеств, в которых не присутствуют числа и .
Уникальным множеством считается то, что встречается один раз (то есть перестановки элементов внутри множества не делают его уникальным).
Пример входных данных:
Первая строка входного файла содержит число — общее количество чисел. Каждая из следующих N строк содержит натуральные числа, не превышающих .
f = open(’27.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) ans = 0 for i in range(1, 2**n): # i = 0 нам не подходит, так как задает пустое подмножество t = i mn = [] for j in range(n): if t % 2 == 1: mn.append(nums[j]) t //= 2 if not 2005 in mn and not 1081 in mn: ans += 1 print(ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны.
Рассматриваются все возможные непустые уникальные подмножества, состоящие из элементов последовательности. Необходимо определить количество различных множеств, длины , содержащих число .
Уникальным множеством считается то, что встречается один раз (то есть перестановки элементов внутри множества не делают его уникальным).
Пример входных данных:
Первая строка входного файла содержит число — общее количество чисел. Каждая из следующих строк содержит натуральные числа, не превышающих .
f = open(’27.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) ans = 0 for i in range(1, 2**n): # i = 0 нам не подходит, так как задает пустое подмножество 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: if 2337 in mn: ans += 1 print(ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Гарантируется, что все числа различны. Рассматриваются все возможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых сумма элементов кратна , а произведение элементов кратно .
Пример входных данных:
Первая строка входного файла содержит число – общее количество троек в наборе. Каждая из следующих строк содержит натуральные числа, не превышающих .
f = open(’27.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) ans = 0 for i in range(1, 2**n): # i = 0 нам не подходит, так как задает пустое подмножество t = i mn = [] for j in range(n): if t % 2 == 1: mn.append(nums[j]) t //= 2 s, p = 0, 1 for x in mn: s += x p *= x if s % 5 == 0 and p % 10 == 0: ans += 1 print(ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны.
Рассматриваются все возможные непустые уникальные подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых количество четных чисел больше, чем количество нечетных.
Уникальным множеством считается то, что встречается один раз (то есть перестановки элементов внутри множества не делают его уникальным).
Пример входных данных:
Первая строка входного файла содержит число — общее количество чисел. Каждая из следующих строк содержит натуральные числа, не превышающих .
f = open(’27.txt’) n = int(f.readline()) nums = [] for i in range(n): nums.append(int(f.readline())) ans = 0 for i in range(1, 2**n): # i = 0 нам не подходит, так как задает пустое подмножество t = i mn = [] for j in range(n): if t % 2 == 1: mn.append(nums[j]) t //= 2 ch = len([x for x in mn if x % 2 == 0]) if ch > len(mn) - ch: ans += 1 print(ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых сумма элементов кратна .
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел в наборе. Каждая из следующих строк содержит натуральное число, не превышающее .
Пример входного файла:
Для указанных данных ответом будет являться .
f = open(’27A.txt’) n = int(f.readline()) k = 2 ans = [0]*k for i in range(n): x = int(f.readline()) ans_new = ans[:] #Аналог ans.copy() #Подсчет ответа для уже существующих подмножеств for j in range(k): ans_new[(j+x) % k] += ans[j] #Составление нового множества из одного числа x ans_new[x % k] += 1 #Сохранение нового количества множеств ans = ans_new[:] print(ans[0])
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых сумма элементов кратна .
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел в наборе. Каждая из следующих строк содержит натуральное число, не превышающее .
Пример входного файла:
Для указанных данных ответом будет являться .
f = open(’27A.txt’) n = int(f.readline()) k = 5 ans = [0]*k for i in range(n): x = int(f.readline()) ans_new = ans[:] #Аналог ans.copy() #Подсчет ответа для уже существующих подмножеств for j in range(k): ans_new[(j+x) % k] += ans[j] #Составление нового множества из одного числа x ans_new[x % k] += 1 #Сохранение нового количества множеств ans = ans_new[:] print(ans[0])
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, сумма элементов которых кратна и кратна .
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел в наборе. Каждая из следующих строк содержит натуральное число, не превышающее .
Пример входного файла:
Для указанных данных ответом будет являться .
f = open(’27A.txt’) n = int(f.readline()) k = 9*2 ans = [0]*k for i in range(n): x = int(f.readline()) ans_new = ans[:] #Аналог ans.copy() #Подсчет ответа для уже существующих подмножеств for j in range(k): ans_new[(j+x) % k] += ans[j] #Составление нового множества из одного числа x ans_new[x % k] += 1 #Сохранение нового количества множеств ans = ans_new[:] print(ans[0])
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых сумма элементов кратна и некратна .
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел в наборе. Каждая из следующих строк содержит натуральное число, не превышающее .
Пример входного файла:
Для указанных данных ответом будет являться .
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])
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых произведение элементов кратно и некратно .
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел в наборе. Каждая из следующих строк содержит натуральные числа, не превышающих .
Пример входного файла:
Для указанных данных ответом будет являться .
Решение 1
f = open(’27.txt’) n = int(f.readline()) k = 8 ans = [0]*k for i in range(n): x = int(f.readline()) ans_new = ans[:] #Аналог ans.copy() #Подсчет ответа для уже существующих подмножеств for j in range(k): ans_new[(j*x) % k] += ans[j] #Составление нового множества из одного числа x ans_new[x % k] += 1 #Сохранение нового количества множеств ans = ans_new[:] print(ans[4])
Решение 2
def dels(k): a = [] for i in range(1, int(k**0.5)+1): if k % i == 0: a.append(i) if i != k // i: a.append(k // i) return sorted(a)[::-1] def sol(k, data): ans = [0] * (k + 1) dels_of_k = dels(k) for i in range(n): x = data[i] ans_new = ans[:] # Аналог ans.copy() # Подсчет ответа для уже существующих подмножеств for j in dels_of_k: for q in dels_of_k: if j * x % q == 0: ans_new[q] += ans[j] break # Составление нового множества из одного числа x for j in dels_of_k: if x % j == 0: ans_new[j] += 1 break # Сохранение нового количества множеств ans = ans_new[:] return ans[k] f = open(’1.txt’) n = int(f.readline()) data = [int(f.readline()) for i in range(n)] print(sol(4, data) - sol(8, data))
Решение 3
def dels(k): a = [] for i in range(1, int(k**0.5)+1): if k % i == 0: a.append(i) if i != k // i: a.append(k // i) return sorted(a)[::-1] def sol(k, data): ans = [0] * (k + 1) dels_of_k = dels(k) for i in range(n): x = data[i] ans_new = ans[:] # Аналог ans.copy() # Подсчет ответа для уже существующих подмножеств for j in dels_of_k: for q in dels_of_k: if j * x % q == 0: ans_new[q] += ans[j] break # Составление нового множества из одного числа x for j in dels_of_k: if x % j == 0: ans_new[j] += 1 break # Сохранение нового количества множеств ans = ans_new[:] return ans[4] f = open(’27A.txt’) n = int(f.readline()) data = [int(f.readline()) for i in range(n)] print(sol(8, data))
Ошибка.
Попробуйте повторить позже
В финал конкурса на получение грантов прошло три предприятия (назовем их ). Заранее было посчитано и отображено в сводной таблице, сколько каждое предприятие сможет производить единиц товара за определенное количество единиц денежных средств.
Фонд, выдающий грант, преследует следующую цель — требуется раздать столько средств каждому из предприятий, чтобы их суммарное количество произведенных единиц товара было максимальным. Фонд может раздать все средства из гранта, либо часть.
Также фонд может выдать средства каждому предприятию лишь единожды. Например, для примера входных данных, он может выдать предприятию денежных средств, но не и денежных средств одновременно, несмотря на то, что фонду хватит на это денег.
В ответе укажите максимальную сумму произведенных единиц товара предприятий на деньги, полученные с гранта.
Имеется следующий набор данных:
В первой строке указано натуральное , — количество строк сводной таблицы. Во второй строке указано натуральное число — общий размер денежных средств фонда для распределения грантов. В третьей строке указано натуральное число — дискретизация распределения средств грантом. Т.е. фонд может выдать количество денежных средств одному предприятию , но не большее, чем число . В последующих строках подается 4 числа — шаг дискретизации, единицы товара для , единицы товара для единицы товара для .
В ответе укажите два числа через пробел: искомое значение для файла A и для файла B.
Пример входных данных:
4
30
10
0 0 0 0
10 34 21 33
20 47 23 40
30 67 55 90
Эти данные можно представить в виде таблицы для большей наглядности:
Например, если фонд выдаст 10 ед. денежных средств, то сможет произвести 34 единицы товара.
Выходные данные для приведённого выше примера:
Выгоднее всего оказалось выдать ед. денежных средств предприятию (а остальным не выдать ничего), т.к. в таком случае будет произведено наибольшее количество товара.
Неэффективное решение
f = open(’27A.txt’) n = int(f.readline()) s = int(f.readline()) k = int(f.readline()) g1, g2, g3 = [], [], [] for i in range(n): a = list(map(int, f.readline().split())) g1.append(a[1]) g2.append(a[2]) g3.append(a[3]) ans = 0 for i in range(n): for j in range(n): for w in range(n): if (i * k) + (j * k) + (w * k) <= s: if g1[i] + g2[j] + g3[w] > ans: ans = g1[i] + g2[j] + g3[w] print(ans)
Эффективное решение
f = open(’27B.txt’) n = int(f.readline()) s = int(f.readline()) k = int(f.readline()) g1, g2, g3 = [], [], [] for i in range(n): a = list(map(int, f.readline().split())) g1.append(a[1]) g2.append(a[2]) g3.append(a[3]) g = [g1, g2, g3] ans = [[0] * n for i in range(n)] F = [[0] * n for i in range(len(g))] F[0] = g[0].copy() for k in range(1, 3): for i in range(n): for j in range(n): if i - j >= 0: ans[i][j] = g[k][j] + F[k - 1][i - j] for i in range(n): F[k][i] = max(ans[i]) print(max(F[2]))
Ошибка.
Попробуйте повторить позже
Дано число , зачем чисел. Нужно найти количество подмножеств, сумма элементов которых делится на .
from math import comb f = open(’1.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] print(ans)