Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста информатика 10 класс программирование

Анна Сафонова Ученик (157), на голосовании 6 дней назад
Кодовый замок
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
В разведывательное управление доставили сейф с секретной информацией, кодовый замок на котором открывается комбинацией из nn цифр, каждая цифра может принимать b различных значений от 0 до b−1. Код неизвестен, однако разведчики передали несколько донесений о том, что сумма цифр кода в некоторых заданных позициях равна какому‑то известному числу. Используя информацию из всех полученных донесений, определите, сколько существует возможных кодов, удовлетворяющих этим условиям.
Формат входных данных
Первая строка входных данных содержит число b количество различных значений одной цифры кода, 2≤b≤10.
Вторая строка содержит число n количество цифр в коде, n≥1, bn≤60000.
Третья строка содержит число t количество имеющихся донесений о сумме каких‑то цифр кода, t≥1.
Следующие 2t строк содержат информацию об имеющихся донесениях. Каждое донесение состоит из двух строк. Первая из этих строк («маска цифр») содержит nn символов, записанных слитно и равных «0» или «1», где цифра «1» обозначает, что в донесении говорится об этой цифре кода. Например, маска цифр «01011» означает сумму цифр, стоящих коде на 2-й, 4-й и 5-й позициях. Во второй строке донесения записано число s, равное сумме цифр кода, стоящих на данных позициях.
Гарантируется, что каждая маска цифр содержит хотя бы одну единицу и что все маски цифр различаются. Общее число донесений может быть любым, удовлетворяющим этим условиям.
Формат выходных данных
Программа должна вывести одно целое число количество различных кодов, которые удовлетворяют всем донесениям.
Система оценки
Решения, правильно работающие, когда n≤4 и каждая маска цифр содержит ровно один символ «1», будут оцениваться в 28 баллов.
Решения, правильно работающие, когда n≤4, будут оцениваться в 64 балла.
Замечание
В примере из условия каждая цифра кода может принимать 8 различных значений от 0 до 7; код состоит из 3 цифр. Получено 2 донесения, из первого донесения известно, что сумма первой и второй цифр кода равна 7, из второго донесения известно, что сумма второй и третьей цифр кода равна 12. Существуют 3 кода, удовлетворяющие этим условиям: «075», «166», «257».
Ввод
8
3
2
110
7
011
12
Вывод
3
Голосование за лучший ответ
R.H. Мастер (1202) 1 месяц назад
by ChatGPT (первый ввод-вывод работает)
 import itertools 

def check_report(code, masks, sums):
# Проверка всех донесений для данного кода
for mask, sum_value in zip(masks, sums):
current_sum = sum(code[i] for i in range(len(code)) if mask[i] == '1')
if current_sum != sum_value:
return False
return True

def count_valid_codes(b, n, masks, sums):
# Генерация всех возможных кодов
valid_codes = 0
all_codes = itertools.product(range(b), repeat=n)

for code in all_codes:
if check_report(code, masks, sums):
valid_codes += 1

return valid_codes

def main():
# Ввод данных
b = int(input())
n = int(input())
t = int(input())

masks = []
sums = []

for _ in range(t):
mask = input().strip()
s = int(input())
masks.append(mask)
sums.append(s)

# Подсчет количества валидных кодов
result = count_valid_codes(b, n, masks, sums)
print(result)

if __name__ == "__main__":
main()
Анна СафоноваУченик (157) 1 месяц назад
это верный ответ?
R.H. Мастер (1202) Анна Сафонова, У меня нет данных всех тестов, первый тест код прошел, дальше сами проверяйте
Анна СафоноваУченик (157) 1 месяц назад
Это олимпиада
R.H. Мастер (1202) Анна Сафонова, думаю код правильный, хоть и по одному тесту сложно судить
Максим ПодопригораПрофи (629) 1 месяц назад
100/100 спс чувак
Артемий СаркисьянЗнаток (304) 1 месяц назад
герой которого мы не можем заслужить((
Анна ГеннадьевнаУченик (65) 1 месяц назад
Дай бог здоровья
Лена ОрловаУченик (98) 1 месяц назад
это какой язык??
baxbax777 Мастер (2234) 1 месяц назад
 from itertools import product 
b = int(input())
p = int(input())
t = int(input())
c = []
for _ in range(t):
m = input().strip()
s = int(input().strip())
c.append((m, s))
r = 0
for x in product(range(b), repeat=p):
valid = True
for m, s in c:
if sum(x[i] for i in range(p) if m[i] == '1') != s:
valid = False
break
if valid:
r += 1
print(r)
-Ученик (100) 1 месяц назад
не подходит
Дилара АбасоваУченик (102) 1 месяц назад
Всё правильно
baxbax777Мастер (2234) 1 месяц назад
+
Kuh guh Ученик (103) 1 месяц назад
def count_codes(b, n, t, reports):
from itertools import product

# Список для хранения ограничений
constraints = []

for i in range(t):
mask = reports[2 * i]
sum_value = int(reports[2 * i + 1])
positions = [j for j in range(n) if mask[j] == '1']
constraints.append((positions, sum_value))

valid_codes_count = 0

# Перебираем все возможные комбинации кодов
for code in product(range(b), repeat=n):
valid = True
for positions, sum_value in constraints:
if sum(code[pos] for pos in positions) != sum_value:
valid = False
break
if valid:
valid_codes_count += 1

return valid_codes_count

# Ввод данных
b = int(input())
n = int(input())
t = int(input())
reports = [input().strip() for _ in range(2 * t)]

# Вычисление количества кодов
result = count_codes(b, n, t, reports)
print(result)
Вячеслав Мишуров Ученик (160) 1 месяц назад
продам ответы на 415 баллов в тг. Dear_Darkkk
Родион Гаврилов Знаток (266) 1 месяц назад
11 класс группа 2 инфа ответы 50р тг @rodyalle
Похожие вопросы