Задания
Версия для печати и копирования в MS Word
Тип 15 № 15858
i

Для ка­ко­го наи­мень­ше­го це­ло­го не­от­ри­ца­тель­но­го числа А вы­ра­же­ние

(y + 2x < A) ∨ (x > 30) ∨ (y > 20)

тож­де­ствен­но ис­тин­но, то есть при­ни­ма­ет зна­че­ние 1 при любых целых не­от­ри­ца­тель­ных x и y?

Спрятать решение

Ре­ше­ние.

Решим за­да­чу гра­фи­че­ски. Усло­вия (x > 30) и (y > 20) за­да­ют мно­же­ство, от­ме­чен­ное на ри­сун­ке за­кра­шен­ной об­ла­стью. Чтобы ис­ход­ное вы­ра­же­ние было тож­де­ствен­но ис­тин­но для любых целых и не­от­ри­ца­тель­ных x и y, пря­мая (y + 2x < A) долж­на на­хо­дить­ся пра­вее не­за­кра­ше­ной об­ла­сти. Сле­до­ва­тель­но, она долж­на про­хо­дить через точки (30, 21) и (30,5, 20). Таким об­ра­зом, наи­мень­шее целое не­от­ри­ца­тель­ное A равно 81.

 

Ответ: 81.

 

При­ведём дру­гое ре­ше­ние на языке Python.

for a in range(0, 300):

k = 0

for x in range(0, 300):

for y in range(0, 300):

if (y + 2 * x < a) or (x > 30) or (y > 20):

k += 1

if k == 90_000:

print(a)

break

 

При­ведём ре­ше­ние Ан­дрея Тух­ма­но­ва на языке Python.

ans = []

for A in range(300):

Flag = True

for x in range(300):

for y in range(300):

if ((y + 2 * x < A) or (x > 30) or (y > 20)) == False:

Flag = False

break

if Flag:

ans.append(A)

print(min(ans))

Источники: