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

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

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

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

—  сумма по­вто­ря­ю­щих­ся чисел (без учёта по­вто­ре­ний, то есть каж­дое число вхо­дит в сумму один раз) боль­ше суммы не­по­вто­ря­ю­щих­ся.

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

За­да­ние 9

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

Ре­ше­ние.

Для ре­ше­ния за­да­чи вы­пи­шем в столб­цы от G до L по­вто­ря­ю­щи­е­ся зна­че­ния, в столб­цы от M до R  — зна­че­ния без по­вто­ре­ний.

Вы­пи­шем в ячей­ку G1 фор­му­лу:

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

Дан­ная фор­му­ла вер­нет в ячей­ку зна­че­ние из ячей­ки A1, если оно встре­ча­ет­ся более 1 раза. Ско­пи­ру­ем фор­му­лу на диа­па­зон G1:L6400.

В ячей­ку М1 вы­пи­шем фор­му­лу =ЕСЛИ(G1="";A1;"") и ско­пи­ру­ем ее на диа­па­зон M1:R6400. Дан­ная фор­му­ла вер­нет зна­че­ние в ячей­ки, если они не по­вто­ря­ют­ся.

В столб­це S будем счи­тать ко­ли­че­ство строк, удо­вле­тво­ря­ю­щих на­ше­му ре­ше­нию. Для этого вве­дем фор­му­лу:

=ЕСЛИ(СЧЁТЕСЛИ(G1:L1;"")=2;ЕСЛИ(СУММ(G1:L1)/2>СУММ(M1:R1);1;0);0)

и ско­пи­ру­ем ее на весь диа­па­зон S1:S6400.

По­счи­та­ем ко­ли­че­ство строк, удо­вле­тво­ря­ю­щих на­ше­му усло­вию, фор­му­лой: =СУММ(S1:S6400).

 

Ответ: 456.

 

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

f = open('9.csv')

cnt = 0

for s in f:

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

if len(set(a)) == 4:

suma1 = 0

suma2 = 0

for i in range (0,len(a)):

if a.count(a[i]) == 2:

suma1 += a[i]

if suma1 != 0:

suma2 = sum(a) - suma1

suma1 //= 2

if suma1>suma2:

cnt+=1

print(cnt)

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

 

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

f = open('09.txt')

count = 0

for s in f:

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

pov = [x for x in m if m.count(x)==2]

nepov = [x for x in m if m.count(x)==1]

if len(pov) == 4 and sum(set(pov)) > sum(nepov):

count += 1

print(count)

 

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


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