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

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

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

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

—  число в дан­ной ячей­ке ровно 45 раз встре­ча­ет­ся в дру­гих стро­ках таб­ли­цы.

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

За­да­ние 9

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

Ре­ше­ние.

Для на­ча­ла по­счи­та­ем, сколь­ко раз встре­ча­ет­ся то или иное число в стро­ках, для этого в ячей­ку G1 впи­шем =СЧЁТЕСЛИ($A1:$F1;A1) и рас­тя­нем до ячей­ки L1 и вниз, до са­мо­го конца таб­ли­цы.

Те­перь най­дем, сколь­ко раз число встре­ча­ет­ся в таб­ли­це, в ячей­ку M1 впи­шем фор­му­лу:

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

и ско­пи­ру­ем фор­му­лу до ячей­ки R6000.

От­ме­тим хо­ро­шие ячей­ки, для этого вве­дем в ячей­ку S1 фор­му­лу и ско­пи­ру­ем ее до ячей­ки X6000:

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

В столб­це Y будем счи­тать ко­ли­че­ство хо­ро­ших ячеек в стро­ке, для этого в ячей­ку Y1 вве­дем фор­му­лу и ско­пи­ру­ем ее до ячей­ки Y6000:

=СУММ(S1:X1).

В столб­це Z будем счи­тать ко­ли­че­ство строк, со­дер­жа­щих хо­ро­шие ячей­ки, для этого в ячей­ку Z1 вве­дем фор­му­лу и ско­пи­ру­ем ее до ячей­ки Z6000:

=ЕСЛИ(Y1>=1;1;0).

Окон­ча­тель­но на­хо­дим ко­ли­че­ство ис­ко­мых строк. Для этого в ячей­ку AA1 за­пи­сы­ва­ем сле­ду­ю­щее:

=СУММ(Z1:Z6000)

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

 

Ответ: 445.

 

При­ме­ча­ние. Во вто­ром усло­вии за­да­чи ска­за­но, что число в дан­ной ячей­ке ровно 45 раз встре­ча­ет­ся в дру­гих стро­ках таб­ли­цы. Это зна­чит, что есть само число и 45 таких же чисел в дру­гих стро­ках, всего 46.

 

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

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

nums = [n for line in lines for n in line]

goodlines = [line for line in lines if any([line.count(n)==1 and nums.count(n)==46 for n in line])]

print(len(goodlines))

 

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

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

d={}

for line in lines:

for n in line:

d[n]=d.get(n,0)+1

goodlines = [line for line in lines if any([line.count(n)==1 and d[n]==46 for n in line])]

print(len(goodlines))

 

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


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