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

От­крой­те файл элек­трон­ной таб­ли­цы, со­дер­жа­щей в каж­дой стро­ке пять на­ту­раль­ных чисел.

Опре­де­ли­те ко­ли­че­ство строк таб­ли­цы, со­дер­жа­щих числа, для ко­то­рых вы­пол­не­ны оба усло­вия:

—  каж­дое число в стро­ке встре­ча­ет­ся по од­но­му разу,

—  утро­ен­ная сумма мак­си­маль­но­го и ми­ни­маль­но­го зна­че­ний не пре­вы­ша­ет удво­ен­ной суммы остав­ших­ся чисел.

В от­ве­те за­пи­ши­те толь­ко число.

За­да­ние 9

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

Ре­ше­ние.

Сна­ча­ла будем про­ве­рять, сколь­ко раз в стро­ке встре­ча­ет­ся число. Для этого в ячей­ку F1 за­пи­шем фор­му­лу:

=СЧЁТЕСЛИ($A1:$E1;A1)

и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на F1:J3200.

В ячей­ке К1 за­пи­шем фор­му­лу =СУММ(F1:J1). Если число в ячей­ке равно 5, то в ряду все числа встре­ча­ют­ся один раз. Ско­пи­ру­ем фор­му­лу во все ячей­ки диа­па­зо­на К1:К3200.

В ячей­ке L1 по­счи­та­ем утро­ен­ную сумму мак­си­маль­но­го и ми­ни­маль­но­го зна­че­ний. Для этого в ячей­ку L1 за­пи­шем фор­му­лу:

=ЕСЛИ(K1=5;3*(МАКС(A1:E1)+МИН(A1:E1));0)

и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на L1:L3200.

В ячей­ке M1 по­счи­та­ем удво­ен­ную сумму остав­ших­ся чисел. Для этого в ячей­ку M1 за­пи­шем фор­му­лу:

=ЕСЛИ(K1=5;2*(СУММ(A1:E1)-МАКС(A1:E1)-МИН(A1:E1));0)

и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на M1:M3200.

В ячей­ке N1 будем вы­пи­сы­вать 1, если ряд под­хо­дит под усло­вие за­да­чи, и 0, если не под­хо­дит. Для этого в ячей­ку N1 за­пи­шем фор­му­лу:

=ЕСЛИ(K1=5;ЕСЛИ(L1<=M1;1;0);0)

и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на N1:N3200.

Окон­ча­тель­но с по­мо­щью фор­му­лы =СУММ(N1:N3200) по­лу­чим ответ  — 853.

 

Ответ: 853.

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са на языке Python.

with open('09.csv') as f:

# если про­сто ко­пи­ро­вать и вста­вить

# можно не де­лать за­ме­ну (replace)

# сор­ти­ров­ка сразу для удоб­ства

nums = [sorted(map(int, s.replace(';', ' ')

.split()))]

for s in f]

cnt = 0

for t in nums:

if len(set(t)) == len(t) \

and 3*(t[0]+t[-1]) <= 2*sum(t[1:4]):

cnt += 1

print(cnt)

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са (через НАИ­БОЛЬ­ШЕЕ/НАИ­МЕНЬ­ШЕЕ).

Суть этого ре­ше­ния в пер­во­на­чаль­ном упо­ря­до­чи­ва­нии эле­мен­тов стро­ки.

Так, впи­сав фор­му­лы

=НАИ­БОЛЬ­ШИЙ(A1:E1, 1), =НАИ­БОЛЬ­ШИЙ(A1:E1, 2),

=НАИ­БОЛЬ­ШИЙ(A1:E1, 3), =НАИ­БОЛЬ­ШИЙ(A1:E1, 4), =НАИ­БОЛЬ­ШИЙ(A1:E1, 5)

в ячей­ки F1:J1 со­от­вет­ствен­но, по­лу­чим пять чисел, иду­щих в по­ряд­ке убы­ва­ния. Где зна­че­ние в F1 будет мак­си­маль­ным зна­че­ни­ем, зна­че­ние в J1  — ми­ни­маль­ным.

Те­перь для про­вер­ки оди­на­ко­во­сти (уни­каль­но­сти) чисел до­ста­точ­но срав­нить толь­ко пары рядом сто­я­щих чисел.

Для пер­вой стро­ки фор­му­ла:

=И(F1>G1;G1>H1;H1>I1;I1>J1).

Для про­вер­ки вто­ро­го усло­вия: сумма мак­си­му­ма и ми­ни­му­ма  — F1 + J1, сумма трех остав­ших­ся  — СУММ(G1:I1).

Зна­чит, фор­му­ла будет вы­гля­деть как:

= 3*(F1+J1)<=2*СУММ(G1:I1).

Для про­вер­ки сов­па­де­ния двух усло­вий так же вос­поль­зу­ем­ся фор­му­лой с умно­же­ни­ем =K1*L1. Для на­хож­де­ния от­ве­та  — =сумм(M:M).

 

При­ведём ре­ше­ние Ми­ха­и­ла Глин­ско­го на языке Python.

count = 0

f = open('09.txt')

for s in f:

m = [int(x) for x in s.split() ]

m.sort()

if len(set(m))==5 and 3*(m[0]+m[-1]) <= 2*(sum(m)-(m[0]+m[-1])):

count += 1

print(count)

 

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

 

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

a = [list(map(int,s.split(';'))) for s in open('09.csv')]

print(len([x for x in a if len(x) == len(set(x)) and 5*(max(x) + min(x)) <= 2*sum(x)]))

 

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

Источник: ЕГЭ по ин­фор­ма­ти­ке 06.04.2023. До­сроч­ная волна