Задание 17 ЕГЭ по информатике — Обработка числовой последовательности (пары)
Разбор номера «Обработка числовой последовательности (пары)»: как устроено задание, настоящие формулировки из тренажёра с подсказками и официальным решением. Окно практики открывается сразу — без регистрации и онбординга.
Задание 17 (№17 — Обработка числовой последовательности (пары)) — вопрос первой части экзамена по информатике: короткий ответ, который проверяется автоматически. Ниже — реальные формулировки из тренажёра с подсказками и разбором; проверка работает прямо на этой странице.
Окно примера ниже — то же, что на сайте: подсказки по одной, автопроверка ответа и разбор.
Примеры задания 17
№ 17Пример 1краткий ответ★★★★★1 первичный балл
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от −100 000 до 100 000 включительно. Определите количество троек элементов последовательности, в которых не менее двух чисел являются трёхзначными, а сумма элементов тройки не менее минимального положительного элемента последовательности, оканчивающегося на 99. В ответе запишите количество найденных троек чисел, затем минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумеваются три идущих подряд элемента последовательности. Задание 17 Ответ:
Подсказка 1. Сначала пройди всю последовательность и найди опорные величины: максимум, минимум, числа с нужными признаками.
Подсказка 2. Перебирай пары и тройки (подряд идущих или разных элементов) и проверяй все условия сразу, считая количество и запоминая нужное наибольшее значение.
Подсказка 3. Элементы пары или тройки должны быть разными, ищи ответ на всём наборе данных, а не на примере. Ловушка — посчитать одну группу дважды.
Разбор.
Решение. Приведём решение на языке Python. a = [int(s) for s in open('17.txt')] m99 = min([x for x in a if x % 100 == 99 and x > 0]) s3 = [] for i in range (len(a) - 2): troika = [a[i] , a[i+1] , a[i+2]] advyx = [x for x in troika if len(str(abs(x)))== 3] if len(advyx) >= 2: if (sum(troika)) >= m99: s3.append(sum(troika)) print(len(s3),min(s3)) Ответ: 60 627.
Ответ.
60 627
№ 17Пример 2краткий ответ★★★★★1 первичный балл
Файл содержит последовательность натуральных чисел, не превышающих 100 000. Назовём тройкой три идущих подряд элемента последовательности. Определите количество троек, для которых выполняются следующие условия: — в тройке есть четырёхзначные числа; — в тройке не более одного числа, у которого остаток от деления на 5 равен остатку от деления на 5 максимального элемента всей последовательности; — в тройке не менее двух чисел, у которых остаток от деления на 7 равен остатку от деления на 7 минимального элемента всей последовательности. В ответе запишите два числа: сначала количество найденных троек, затем максимальную величину суммы элементов этих троек. Задание 17 Ответ:
Подсказка 1. Сначала пройди всю последовательность и найди опорные величины: максимум, минимум, числа с нужными признаками.
Подсказка 2. Перебирай пары и тройки (подряд идущих или разных элементов) и проверяй все условия сразу, считая количество и запоминая нужное наибольшее значение.
Подсказка 3. Элементы пары или тройки должны быть разными, ищи ответ на всём наборе данных, а не на примере. Ловушка — посчитать одну группу дважды.
Разбор.
Решение. Приведём решение на языке Python. a = [int(s) for s in open('17.txt')] amax5 = max(a) % 5 amin7 = min(a) % 7 s3 = [] for i in range (len(a) - 2): troika = [a[i] , a[i+1] , a[i+2]] alen4 = [x for x in troika if len(str(x)) == 4] a5 = [x for x in troika if x % 5 == amax5] a7 = [x for x in troika if x % 7 == amin7] if len(a5) = 2 and len(alen4) > 0: s3.append(sum(troika)) print(len(s3),max(s3)) Ответ: 120 194137. Приведём решение Бориса Савельева на языке Python. f=open('17.txt') a=[int(x) for x in f] xmin7=min(a)%7 xmax5=max(a)%5 k=0 summ=0 for i in range (0,len(a)-2): if len(str(a[i]))==4 or len(str(a[i+1]))==4 or len(str(a[i+2]))==4: if (a[i]%5!=xmax5 and a[i+1]%5!=xmax5 and a[i+2]%5!=xmax5) or (a[i]%5==xmax5 and a[i+1]%5!=xmax5 and a[i+2]%5!=xmax5) or (a[i]%5!=xmax5 and a[i+1]%5==xmax5 and a[i+2]%5!=xmax5) or (a[i]%5!=xmax5 and a[i+1]%5!=xmax5 and a[i+2]%5==xmax5): if (a[i]%7==xmin7 and a[i+1]%7==xmin7 and a[i+2]%7!=xmin7) or (a[i]%7!=xmin7 and a[i+1]%7==xmin7 and a[i+2]%7==xmin7) or (a[i]%7==xmin7 and a[i+1]%7!=xmin7 and a[i+2]%7==xmin7) or (a[i]%7==xmin7 and a[i+1]%7==xmin7 and a[i+2]%7==xmin7): k+=1 summ=max(a[i]+a[i+1]+a[i+2],summ) print(k,summ) Приведём решение Егора Чернецова на языке Python. a = list(map(int, open('17.txt'))) mx = max(a) % 5 mn = min(a) % 7 k = best = 0 for i in range(len(a)-2): t = a[i:i+3] if any(1000 = 2: k += 1 best = max(best, sum(t)) print(k, best) Приведём решение Ивана Свербихина на языке Python. f = list(map(int, open('17.txt').read().split('\n')[:-1])) res = [] a = min([i for i in f]) a1 = max([i for i in f]) for i in range(len(f) - 2): para = [f[i], f[i + 1], f[i + 2]] c = 0 k = 0 m = 0 for j in para: if len(str(abs(j))) == 4: c += 1 if j % 5 == a1 % 5: k += 1 if j % 7 == a % 7: m += 1 if c != 0 and k = 2: res.append(sum(para)) print(len(res), max(res)) Приведём решение Юрия Красильникова на языке Python. def good(p,m,M): t = [1000 = 2 a = [int(s) for s in open('17.txt')] m = min(a) M = max(a) r = [sum(a[i-2:i+1]) for i in range(2,len(a)) if good(a[i-2:i+1],m,M)] print(len(r),max(r))
Ответ.
120 194137
Как устроена практика в тренажёре
Опыт за каждое решение
Чистое решение без подсказок ценится выше: опыт, уровни и серии растут с каждым заданием, а не за клики.
Ошибки не пропадают
Нерешённое возвращается в работу над ошибками — тренажёр приведёт к заданию снова, пока оно не закроется без помощи.
Прогноз балла
После нескольких решённых номеров тренажёр показывает прогнозный балл и говорит, какие темы подтянуть, чтобы его поднять.
Закрепи задание 17 в тренажёре
Окно практики откроется сразу — без имени и онбординга. Прогресс сохранится, как только укажешь имя.