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

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

—  все числа в стро­ке раз­лич­ны;

—  нечётных чисел боль­ше, чем чётных;

—  сумма нечётных чисел мень­ше суммы чётных.

В от­ве­те за­пи­ши­те число  — ко­ли­че­ство строк, для ко­то­рых вы­пол­не­ны эти усло­вия.

За­да­ние 9

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

Ре­ше­ние.

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

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

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

От­дель­но вы­пи­шем все чет­ные и не­чет­ные числа в стро­ке.

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

=ЕСЛИ(ЕЧЁТН(A1)=ИС­ТИ­НА;A1;0)

и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на L1:P6400. Дан­ная фор­му­ла вер­нет в ячей­ку зна­че­ние числа если оно чет­ное и ноль если не­чет­ное. В столб­цах от L до P мы по­лу­чи­ли толь­ко чет­ные числа.

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

=ЕСЛИ(НЕ(ЕЧЁТН(A1))=ИС­ТИ­НА;A1;0)

и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на Q1:U6400. Дан­ная фор­му­ла вер­нет в ячей­ку зна­че­ние числа, если оно не­чет­ное, и ноль, если чет­ное. В столб­цах от Q до U мы по­лу­чи­ли толь­ко не­чет­ные числа.

В столб­це V по­счи­та­ем ко­ли­че­ство чет­ных чисел. Для этого в ячей­ке V1 вве­дем фор­му­лу =СЧЁТЕСЛИ(L1:P1;"<>0") и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на V1:V6400.

В столб­це W по­счи­та­ем ко­ли­че­ство не­чет­ных чисел. Для этого в ячей­ке W1 вве­дем фор­му­лу =СЧЁТЕСЛИ(Q1:U1;"<>0") и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на W1:W6400.

В столб­це X будем срав­ни­вать ко­ли­че­ство чет­ных и не­чет­ных чисел. Для этого в ячей­ке X1 вве­дем фор­му­лу =ЕСЛИ(W1>V1;1;0) и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на X1:X6400. Если не­чет­ных чисел будет боль­ше, зна­че­ние ячей­ки будет 1, и 0, если боль­ше чет­ных чисел.

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

=ЕСЛИ(СУММ(L1:P1)>СУММ(Q1:U1);1;0)

и ско­пи­ру­ем её во все ячей­ки диа­па­зо­на Y1:Y6400. Если сумма нечётных чисел мень­ше суммы чётных зна­че­ние ячей­ки будет 1.

В столб­це Z будем про­ве­рять ячей­ки на удо­вле­тво­ре­ние усло­вию за­да­чи. Для этого надо, чтобы зна­че­ние столб­ца K рав­ня­лось 5, а столб­цы X и Y рав­ня­лись 1. Для этого в ячей­ке Z1 вве­дем фор­му­лу:

=ЕСЛИ(И(K1=5;X1=1;Y1=1);1;0)

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

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

 

Ответ: 303.

 

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

count = 0

for s in open('9.txt'):

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

if len(M) == len(set(M)): # — все числа в стро­ке раз­лич­ны;

chet = [x for x in M if x % 2 == 0]

nechet = [x for x in M if x % 2 != 0]

if len(nechet) > len(chet):

if sum(nechet) < sum(chet):

count += 1

print(count)

 

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

 

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

count = 0

for s in open('09.csv'):

a = list(map(int,s.split(';')))

aodd = [x for x in a if x%2==1]

if len(a) == len(set(a)) and len(aodd)>2 and 2*sum(aodd) < sum(a):

count += 1

print(count)

 

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

 

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

print([True if len(set(y)) == 5 and len([n for n in y if n%2 != 0]) > 3 and sum([n for n in y if n%2 != 0]) < sum([n for n in y if n%2 == 0]) else False for y in tuple(map(lambda x: sorted(tuple(map(int, x.split(';')))), open('09.csv').read().splitlines()))].count(True))

 

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

 

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

uses XLSX;

begin

var a:=ReadXLSXAsInts('09.xlsx');

var k:=0;//ко­ли­че­ство строк

foreach var x in a do

if x.Distinct.Count=x.Count

then begin

var nech:=x.Where(n->n.isOdd).ToArray;

var chet:=x.Where(n->n.isEven).ToArray;

if nech.Count>chet.Count

then if nech.Sum < chet.Sum

then k+=1;

end;

Println(k);

end.

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


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