Укажите наименьшее целое значение А, при котором выражение ( – 5y + 3x < A) ∨ (x > 15) ∨ (y > 30) истинно для любых целых положительных значений x и y.
for test_permutation in itertools.permutations(input_list):
test_num = int(''.join(test_permutation))
if max_num < test_num:
max_num = test_num
print(max_num)
Объяснение:
каким-то образом реши как вводятся числа, и составь из них список input_list - как строки из чисел (не превращай их в числа раньше времени, т.к. 004 превратится в 4).
вся магия происходит в itertools.permutations, она возвращает всевозможные перестановки этого списка. в цикле проверяется составленное число из этой перестановки является ли самым большим или нет.
это решение задачи имеет сложность O(n!) где n - число элементов списка. т.к. именно столько перестановок, можно уменьшить сложность до O(1) отсортировав список по-алфавиту по убыванию, и собрать из него число, но нужно еще доказать что именно такое число будет самым большим.
Составим программу:
for x in range(2):
for y in range(2):
for w in range(2):
for z in range(2):
if (((x<=y) and (y<=w))or(z==(x or y)))==False:
print(x,y,w,z)
Нам выдаются следующие значения:
х у w z
0 1 0 0 (a)
1 0 0 0 (b)
1 0 1 0 (c)
1 1 0 0 (d)
Мы видим,что одна из строчек не подходит под нашу таблицу. Это либо строчка (а), либо строчка (b),т.к. обе строчки с двумя единицами входят в таблицу.
Рассматривая таблицу видно,что в строчках с двумя единицами есть переменная(последний столбец) которая равна 1, и это х
В первом столбце у и тогда строчка (b) - лишняя
Делаем выводы,что второй столбец - w,а третий - z
ответ: y,w,z,x
input_list = ['2','20','004','66']
import itertools
max_num = 0
for test_permutation in itertools.permutations(input_list):
test_num = int(''.join(test_permutation))
if max_num < test_num:
max_num = test_num
print(max_num)
Объяснение:
каким-то образом реши как вводятся числа, и составь из них список input_list - как строки из чисел (не превращай их в числа раньше времени, т.к. 004 превратится в 4).
вся магия происходит в itertools.permutations, она возвращает всевозможные перестановки этого списка. в цикле проверяется составленное число из этой перестановки является ли самым большим или нет.
это решение задачи имеет сложность O(n!) где n - число элементов списка. т.к. именно столько перестановок, можно уменьшить сложность до O(1) отсортировав список по-алфавиту по убыванию, и собрать из него число, но нужно еще доказать что именно такое число будет самым большим.