17.Обработки числовой последовательности

23.11.2021

В задание №17  добавлен файл. Он содержит последовательность целых чисел, которую необходимо будет использовать для обработки массива. Также в задании есть пример решения для другой последовательности. В ответ потребуется записать пару чисел, требуемую по условиям задачи.

Задание 17 проверяет умение написать простую переборную программу, на языке программирования, содержащую циклы и ветвление. Это задание проверяет только технические программистские умения, так как сам алгоритм решения описан в постановке задачи.

В отличии от 2021 года, в 2022 году к заданию 17 будет прилагаться файл данных. Отдельной технической задачей является чтение этого файла. Ответ будет зависеть от исходных данных.

Решением будет являться алгоритм последовательного просмотра пар.

Вариант 1. В данных задачах под парой подразумевается два идущих подряд элемента последовательности.
ДЕМО-вариант
В файле 17-демо-3.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от −10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых хотя бы одно число делится на 3, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Например, для последовательности из пяти элементов: 6; 2; 9; –3; 6 — ответ: 4 11.
Решение:
Для выполнения этого задания необходимо:
  • Cкачать файл, создать папку и перенести его в эту папку;
  • Создать файл для программы и сохранить его тоже в эту папку;
  • Создать текстовый файл (.txt)для того что бы протестировать программу в правильности решения;
  • Прочитать внимательно задание.
Описание программы:
Python может с относительной легкостью обрабатывать различные форматы файлов:
  • f=open(‘test.txt’) — открываем файл и назначаем его переменной f
  • a=[int(i) for i in f] -заполняем массив а целыми числами из последовательности f
  • f.close() — закрываем переменную, деактивирует соединение между файлом и программой.
  • k=0 — для подсчета соответствующих пар нам понадобиться переменная, обнуляем её.
  • mx=-10000 — максимальную сумму элементов сделаем самым минимальным
  • for i in range(len(a)-1): -начинаем последовательный перебор, следует перебирать с первого до ПРЕДПОСЛЕДНЕГО или со второго до ПОСЛЕДНЕГО.
    ВАЖНО НЕ ДОПУСТИТЬ ВЫХОДА ЗА ПРЕДЕЛЫ МАССИВА!
  • if a[i]%3==0 or a[i+1]%3==0: — по условию необходимо, что бы хотя бы одно число было кратно 3, используем остаток от деления (%)
  • k+=1 — если условие выполняется, включается подсчет пар
  • mx=max(mx,a[i]+a[i+1]) — — если условие выполняется ищем максимальную сумму таких пар
  • print(k,mx) — выводим результат

Задачу примера выполнили правильно, подключаем файл с исходными данными и находим ответ.

Ответ: 2802 1990
(№ 4352) (П. Волгин) В файле 17-P.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от –100 до 100 включительно. Определите сначала количество пар элементов последовательности, в которых хотя бы одно число оканчивается на 7, а затем максимальную из сумм элементов таких пар. Под парой подразумевается два идущих подряд элемента последовательности. Например, для последовательности из 5 элементов: 7, 27, 17, 5, 57 ответ должен быть 4 62.

Задачу примера выполнили правильно, подключаем файл с исходными данными и находим ответ.

Ответ: 12 159, но у Полякова 16 и 159??????
Проверим задачу в Excel

Импортируем данные в таблицу из текстового файла. Самый простой способ: открыть текстовый файл ➦ Ctrl+A ➦ Ctrl+C ➦ переходим в таблицу ➦ выделить  ячейку А1 ➦ Ctrl+V.

Вот такую вложенную друг в друга формулу вставляем в ячейку В2:

=ЕСЛИ(ИЛИ(ОСТАТ(A1;10)=7;ОСТАТ(A2;10)=7);A1+A2;» «)

Ответ: 12 159, но у Полякова 16 и 159??????
Вариант 2. В данных задачах под парой подразумевается два различных элемента последовательности. Порядок элементов в паре не важен.
Вариант 3. В данных задачах считаем тройки элементов идущих подряд выполняя условие
(П. Финкель) В файле 17-P2.txt содержится последовательность целых чисел, которые принимают значения от -10000 до 10000 включительно. Тройка идущих подряд чисел последовательности называется уникальной, если только второе из них является положительным числом, заканчивающимся на 9. Определите количество уникальных троек чисел, а затем – максимальную из всех сумм таких троек.
Файл 17tr.txt содержит последовательность неотрицательных целых чисел, не превышающих 10 000. Назовём тройкой три идущих подряд элемента последовательности. Определите количество троек чисел таких, которые могут являться сторонами остроугольного треугольника. В ответе запишите два числа: сначала количество найденных троек, а затем — максимальную сумму элементов таких троек. Если таких троек не найдётся — следует вывести 0 0.
*Заметим, что треугольник является остроугольным, если квадрат длины наибольшей стороны треугольника будет меньше суммы квадратов длин других двух сторон. Решим задачу перебором.