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

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

За­да­ние 9

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

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

—  бу­дучи упо­ря­до­чен­ны­ми, че­ты­ре числа об­ра­зу­ют ариф­ме­ти­че­скую про­грес­сию.

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

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

Ре­ше­ние.

По­счи­та­ем ко­ли­че­ство ячеек, удо­вле­тво­ря­ю­щих усло­ви­ям. В ячей­ку E1 вве­дем фор­му­лу =МАКС(A1:D1)^2 для на­хож­де­ния квад­ра­та мак­си­маль­но­го зна­че­ния. Ско­пи­ру­ем фор­му­лу на весь диа­па­зон E1:E1000. В ячей­ку F1 вве­дем фор­му­лу:

=ПРО­ИЗ­ВЕД(A1:D1)/МАКС(A1:D1)

для по­ис­ка про­из­ве­де­ния остав­ших­ся трех чисел. Ско­пи­ру­ем фор­му­лу на весь диа­па­зон F1:F1000. В ячей­ку G1 вве­дем фор­му­лу =ЕСЛИ(E1>F1;1;0) для по­ис­ка ячеек, удо­вле­тво­ря­ю­щих пер­во­му усло­вию. Ско­пи­ру­ем фор­му­лу на весь диа­па­зон G1:G1000.

Для по­ис­ка ячеек, удо­вле­тво­ря­ю­щих вто­ро­му усло­вию, в ячей­ку H1 вве­дем фор­му­лу:

=СЧЁТЕСЛИ(A1:D1;МИН(A1:D1)+(МАКС(A1:D1)-МИН(A1:D1))/3).

Cко­пи­ру­ем фор­му­лу на весь диа­па­зон H1:H1000.

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

=СЧЁТЕСЛИ(A1:D1;МИН(A1:D1)+2*(МАКС(A1:D1)-МИН(A1:D1))/3).

Cко­пи­ру­ем фор­му­лу на весь диа­па­зон I1:I1000.

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

=ЕСЛИ(И(H1=1;I1=1);1;0).

Cко­пи­ру­ем фор­му­лу на весь диа­па­зон J1:J1000.

Если зна­че­ние в ячей­ке равно 1, сле­до­ва­тель­но, стро­ка об­ра­зу­ет ариф­ме­ти­че­скую про­грес­сию.

Для по­ис­ка строк, удо­вле­тво­ря­ю­щим всем усло­ви­ям, в ячей­ку K1 вве­дем фор­му­лу:

=ЕСЛИ(ИЛИ(G1=1;J1=1);1;0)

и ско­пи­ру­ем фор­му­лу на весь диа­па­зон K1:K1000. Те­перь найдём ко­ли­че­ство строк, удо­вле­тво­ря­ю­щих усло­вию, введя фор­му­лу =СУММ(K1:K1000). Тогда ответ  — 61.

 

Ответ: 61.

 

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

count = 0

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

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

if M[-1] ** 2 > (M[0] * M[1] * M[2]) or all(M[1] - M[0] == M[i+1] - M[i] for i in range(len(M)-1)):

count += 1

print(count)

 

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

 

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

def F(m):

if m[3]-m[2] == m[2]-m[1] and m[2]-m[1] == m[1]-m[0]:

return 1

else: return 0

 

f = open('9_58322.txt')

count = 0

for s in f:

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

m.sort()

if F(m) == 1 or m[-1]**2 > m[0]*m[1]*m[2]:

count += 1

print(count)

 

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

 

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

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

b = [x for x in a if (x[3]**2>x[0]*x[1]*x[2]) or len(set([x[i+1]-x[i] for i in range(3)]))==1]

print(len(b))

 

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