Задание № 12. Статград 25.10.2022. Решение системой уравнений. Phyton
Вариант 1
Дана программа для редактора:
НАЧАЛО
ПОКА НЕ нашлось (00)
заменить (011, 20)
заменить (022, 10)
заменить (01, 220)
заменить (02, 110)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка A содержала ровно два нуля – на первом и на последнем месте, а также поровну единиц и двоек. После выполнения данной программы получилась строка B, содержащая 40 единиц и больше 50 двоек. Какое наименьшее количество двоек может быть в строке B?
Как работают команды алгоритма для исходных строк:
0110 = 200
0220 = 100
010 = 2200
020 = 1100
|
кол-во
цифр “1” |
кол-во цифр “2” |
Строка 0110 - a |
0 |
1 |
Строка 0220 - b |
1 |
0 |
Строка 010 - c |
0 |
2 |
Строка 0120 - d |
2 |
0 |
Количество единиц = 0*a + 1*b +
0*c + 2*d = 40
Количество двоек = 1*a + 0*b + 2*c + 0*d > 50
Условие для исходной строки (количество единиц и двоек равно):
2*a + c = 2*b + d
s = []
for a in range(0,50):
for b in range(0,50):
for c in range(0,50):
for d in range(0,50):
if (a*0 + b*1 + c*0 + d*2 == 40 and
a*1 + b*0 + c*2 + d*0 > 50 and
2*a + c == 2*b + d):
s.append(a*1 + b*0 + c*2 + d*0)
print(s,min(s))
#Ответ: 52
Вариант 2
Известно, что исходная строка A содержала ровно два нуля – на первом и на последнем месте, а также поровну единиц и двоек. После выполнения данной программы получилась строка B, содержащая 47 единиц и меньше 70 двоек. Какое наибольшее количество двоек может быть в строке B?
s = []
for a in range(0,50):
for b in range(0,50):
for c in range(0,50):
for d in range(0,50):
if (a*0 + b*1 + c*0 + d*2 == 47 and
a*1 + b*0 + c*2 + d*0 < 70 and
2*a + c == 2*b + d):
s.append(a*1 + b*0 + c*2 + d*0)
print(s,max(s))
#Ответ: 68
Комментарии