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

В каж­дой стро­ке элек­трон­ной таб­ли­цы за­пи­са­ны шесть на­ту­раль­ных чисел.

Назовём ячей­ку таб­ли­цы ин­те­рес­ной, если для числа в ней од­но­вре­мен­но вы­пол­не­ны все сле­ду­ю­щие усло­вия:

—  это число не встре­ча­ет­ся в дру­гих ячей­ках той же стро­ки;

—  это число встре­ча­ет­ся не менее 330 раз в дру­гих ячей­ках того же столб­ца;

—  это число боль­ше сред­не­го ариф­ме­ти­че­ско­го всех чисел стро­ки, в ко­то­рой оно на­хо­дит­ся (с учётом са­мо­го числа).

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

За­да­ние 9

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

Ре­ше­ние.

Сна­ча­ла про­ве­рим пер­вое усло­вие. Для этого в ячей­ку G1 вве­дем фор­му­лу:

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

и ско­пи­ру­ем эту фор­му­лу во все остав­ши­е­ся ячей­ки диа­па­зо­на G1:L30000.

Про­ве­рим вто­рое усло­вие. Для этого в ячей­ку M1 вве­дем фор­му­лу:

=ЕСЛИ(СЧЁТЕСЛИ(A:A;A1)>=331;1;0)

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

Про­ве­рим тре­тье усло­вие. Для этого в ячей­ку S1 вве­дем фор­му­лу, чтобы по­счи­тать сред­нее ариф­ме­ти­че­ское всех чисел стро­ки:

=СРЗНАЧ(A1:F1)

и ско­пи­ру­ем эту фор­му­лу во все остав­ши­е­ся ячей­ки диа­па­зо­на S2:S30000.

В ячей­ку T1 вве­дем фор­му­лу:

=ЕСЛИ(A1>$S1;1;0)

и ско­пи­ру­ем эту фор­му­лу во все остав­ши­е­ся ячей­ки диа­па­зо­на T1:Y30000.

Опре­де­лим уни­каль­ные ячей­ки. Для этого вв ячей­ку Z1 вве­дем фор­му­лу:

=ЕСЛИ(И(G1=1;M1=1;T1=1);1;0)

и ско­пи­ру­ем эту фор­му­лу во все остав­ши­е­ся ячей­ки диа­па­зо­на Z1:AE30000.

В ячей­ке AF по­счи­та­ем ко­ли­че­ство уни­каль­ных ячеек в стро­ке. Для этого в ячей­ку AF1 вве­дем фор­му­лу:

=СУММ(Z1:AE1)

и ско­пи­ру­ем эту фор­му­лу во все остав­ши­е­ся ячей­ки диа­па­зо­на AF1:AF30000.

Про­ве­рим, удо­вле­тво­ря­ет ли стро­ка тре­бо­ва­ни­ям за­да­чи.

Для этого в ячей­ку AG1 вве­дем фор­му­лу:

=ЕСЛИ(AF1=1;1;0)

и ско­пи­ру­ем эту фор­му­лу во все остав­ши­е­ся ячей­ки диа­па­зо­на AG1:AG30000.

Окон­ча­тель­но вос­поль­зо­вав­шись фор­му­лой:

=СУММ(AG:AG),

по­лу­чим ответ  — 4175.

 

 

Ответ: 4175.

 

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

# Не­об­хо­ди­мо пред­ва­ри­тель­но со­хра­нить дан­ные из таб­ли­цы LibreOffice Calc

# в файл .csv с раз­де­ли­те­лем ';'

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

сло­ва­ри = [{} for i in range(6)]

# сло­ва­ри - это спи­сок из шести сло­ва­рей. Эле­мент сло­ва­ри[i] со­дер­жит све­де­ния,

# сколь­ко раз каж­дое число по­яв­ля­ет­ся на i-м месте в стро­ках чисел.

# Спи­сок сло­ва­рей уско­ря­ет ра­бо­ту.

for числа in a: # за­пол­не­ние сло­ва­рей

for i in range(6):

сло­ва­ри[i][числа[i]] = сло­ва­ри[i].get(числа[i],0)+1

ответ = 0

for числа in a: # подсчёт числа строк со­глас­но усло­вию

ин­те­рес­ных = 0

for i in range(6): # сколь­ко ин­те­рес­ных ячеек из шести

усло­вие1 = числа.count(числа[i]) == 1

усло­вие2 = сло­ва­ри[i][числа[i]] >= 331 # 1 раз в те­ку­щей стро­ке и >= 330 в осталь­ных

усло­вие3 = числа[i] > sum(числа)/len(числа)

if усло­вие1 and усло­вие2 and усло­вие3: ин­те­рес­ных += 1

if ин­те­рес­ных == 1: ответ += 1

print(ответ)


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