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

В каж­дой стро­ке элек­трон­ной таб­ли­цы за­пи­са­ны че­ты­ре на­ту­раль­ных числа. Опре­де­ли­те, сколь­ко в таб­ли­це таких четвёрок, в ко­то­рых любые три числа могут быть сто­ро­на­ми не­вы­рож­ден­но­го тре­уголь­ни­ка (вы­рож­ден­ным на­зы­ва­ет­ся тре­уголь­ник, у ко­то­ро­го сумма длин двух сто­рон равна длине тре­тьей сто­ро­ны).

За­да­ние 9

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

Ре­ше­ние.

За­ме­тим, что если наи­боль­шее число боль­ше или равно сумме двух наи­мень­ших, то из этих трех чисел тре­уголь­ник со­ста­вить нель­зя, а по­то­му и вся чет­вер­ка чисел не под­хо­дит. Если же наи­боль­шее число мень­ше суммы двух наи­мень­ших, то из любых трех чисел такой чет­вер­ки тре­уголь­ник со­ста­вить можно. Най­дем все такие чет­вер­ки чисел.

В ячей­ку E1 за­пи­шем фор­му­лу =МАКС(A1:D1) и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на E2:E5000. В ячей­ку F1 за­пи­шем фор­му­лу =МИН(A1:D1) и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на F2:F5000. В ячей­ку G1 за­пи­шем фор­му­лу =НАИ­МЕНЬ­ШИЙ(A1:D1;2) и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на G2:G5000. Таким об­ра­зом, найдём наи­боль­шее число и два наи­мень­ших числа в стро­ке. В ячей­ку H1 за­пи­шем фор­му­лу =ЕСЛИ(E1<F1+G1;1;0) и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на H2:H5000. Окон­ча­тель­но с по­мо­щью фор­му­лы =СУММ(H1:H5000) по­лу­чим ответ  — 1842.

 

Ответ: 1842.

 

При­ме­ча­ние.

Для про­грамм­но­го ре­ше­ния файл exсel не­об­хо­ди­мо со­хра­нить как тек­сто­вый до­ку­мент.

 

При­ведём ре­ше­ние Али­е­ва Ра­ми­ра на языке Python.

from itertools import permutations

y = [list(map(int,i.split())) for i in open('9.txt')]

q = 0

for u in y:

if all(n[0]+n[1]>n[2] for n in permutations(u,3)):

q += 1

print(q)

 

При­ведём ре­ше­ние Ни­ки­ты Юр­ло­ва на языке Python.

f = open('107_9.txt')

c = 0

for i in f:

a = sorted(list(map(int, i.split())))

if a[0] + a[1] > a[3] and a[0] + a[2] > a[3] and a[1] + a[2] > a[3]:

c += 1

print(c)

 

При­ведём ре­ше­ние Сер­гея Донец на языке PascalABC.NET.

uses XLSX;

begin

var cnt := 0;

var data := ReadXLSXAsInts('47006.xlsx');

foreach var rw in data do

if rw.Combinations(3).All(trio ->

begin

var (a, b, c) := trio.Order;

result:=a + b > c;

end)

then cnt += 1;

Println(cnt);

end.

При­ме­ча­ние. Файл сле­ду­ет со­хра­нить в фор­ма­те xlsx.


Аналоги к заданию № 46967: 47006 Все