πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №9 → Задание i09-07

Задание №9 ЕГЭ Информатика с ответом и решением

Ответ: 351

Условие

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

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

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

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

Подсказки — как подойти к решению

  1. Раздели строку на два списка: числа, которые встречаются ровно два раза, и числа, которые встречаются один раз. Проверь, что различных чисел ровно четыре — тогда в первом списке два значения, во втором тоже два, а чисел с другой кратностью нет.
  2. Повторяющиеся числа складывай без учёта повторов: каждое значение входит в сумму один раз. Сумму неповторяющихся бери как есть и сравни, какая меньше. В ответ идёт количество строк, а не сумма значений.

Решение

Для решения задачи выпишем в столбцы от 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).

Ответ: 351.

Приведём решение Алиева Рамира на языке Python.

y = [list(map(int,i.split())) for i in open('09.txt')]

q = 0

for u in y:

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

if all(('__'+'__'.join(list(map(str,u)))+'__').count('_'+str(n)+'_') !=3 for n in u):

if sum(u)-sum(set(u))< 2*sum(set(u))-sum(u):

q += 1

print(q)

Приведём решение Файзуллина Владимира (Пермь) на языке Python.:

def kp(x):

pk=[]

for i in range(len(x)):

pk+=[x.count(x[i])]

return pk

k=0

for a in open('99.txt'):

s1 = 0

s2 = 0

x = list(map(int, a.split()))

kel = kp(x)

id = sum([1,1,2,2,2,2])

if sum(kel) == id:

for i in range(len(x)):

if kel[i] == 2:

s1 += x[i]

if kel[i] == 1:

s2 += x[i]

if s1/2 < s2:

k += 1

print(k)

Приведём решение Дмитрия Пехова на языке Python.:

f = open('09.txt')

count = 0

for i in f:

l = [int(x) for x in i.split()]

repeat = [x for x in l if l.count(x) == 2]

nonrepeat = [x for x in l if l.count(x) == 1]

if len(repeat) == 4 and len(nonrepeat) == 2 and sum(repeat) // 2 < sum(nonrepeat):

count += 1

print(count)

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

f = open('09.txt')

cnt = 0

for s in f:

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

p = []

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

for i in range(len(a)):

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

p.append(a[i])

if len(p)==4:

if sum(set(p))<(sum(a)-sum(p)):

cnt+=1

print(cnt)

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

Ответ: 351

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №9 по информатике