Алгоритмы обработки

265 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Дано количество целых чисел n. Далее в n строках вводятся целые числа (обозначим их как x).

Для каждого введённого числа x необходимо вычислить значение функции \( f(x)=2x−5\).

Найти значение x (аргумент), при котором функция \( f(x)\) принимает максимальное значение.

Формат входных данных

  • Первая строка: целое число n (количество чисел в последовательности), где \(1 \le n \le 100\).

  • Следующие n строк: целые числа (значения x). Каждое число по модулю не превышает 105


Формат выходных данных

Два числа через пробел:

  • первое число: значение x, при котором функция \( f(x)=2x−5\) достигает своего максимума
  • второе число: максимальное значение функции \( f(x)=2x−5\).

 

Дано количество целых чисел n. Далее в n строках вводятся целые числа. Найти разницу между максимальным и минимальным элементами последовательности.

Формат входных данных

  • Первая строка: количество чисел n - целое положительное число. Количество чисел не больше 100.

  • Следующие n строк: целые числа. Каждое число по модулю не превышает 107.

Формат выходных данных

  • Одно число - разница между максимумом и минимумом.

В игре Fortnite игрок выполняет задания и получает V-Bucks. Но премиальные награды (больше 100 V-Bucks) идут в особый фонд для покупки редких скинов.​

Напишите программу, которая подсчитывает общую сумму полученных премиальных наград — те, где награда V-Bucks больше 100.​

Входные данные:
Первая строка: N — количество выполненных заданий (N ≤ 20)

Следующие N строк: количество V-Bucks за каждое задание (число от 0 до 500)

Выходные данные:
Сумма премиальных наград (сумма только тех чисел, которые строго больше 100)

Макс покупает скины в Roblox и записывает цену каждой покупки в робуксах. Ему нужно узнать, сколько раз он потратил больше 100 робуксов за одну покупку (дорогие покупки).​
Напишите программу, которая запрашивает у пользователя информацию (см. входные данные) и выводит ответ

Входные данные:

  • Первая строка: N — количество покупок (N <= 20)

  • Следующие N строк: по одному числу от 10 до 500 — цена покупки в робуксах

Выходные данные: количество покупок дороже 100 робуксов

Артём играет в Standoff 2 и записывает результаты матчей: 1 — победа, 0 — поражение.

Напишите программу, которая запрашивает у пользователя необходимые данные (см входные данные) и подсчитывает количество побед.​

Входные данные:

  • Первая строка: N — количество матчей (N <= 20)

  • Следующие N строк: по одному числу (0 или 1) — результат каждого матча

Выходные данные: количество побед

На вход подается битовая строка - строка, состоящая из 0 и 1. Дополните исходную строку последним битом - битом чётности. Бит чётности равен 0, если в исходной строке чётное число единиц, и равен 1, если нечётное (в получившейся строке должно быть всегда чётное число единиц).
 
Примеры
Входные данные Выходные данные
1 00110010 001100101
Дубликаты - одинаковые строки в данных, которые могут исказить анализ.

Основные методы

df.duplicated() - находит дубликаты (возвращает True/False)
df.drop_duplicates() - удаляет дубликаты
df.nunique() - количество уникальных значений
Параметры drop_duplicates()
subset - столбцы для проверки дубликатов
keep - какую копию оставить ('first', 'last', False)
ignore_index -  пересоздает аккуратный последовательный индекс (0, 1, 2, 3, 4...).
Пример
df_clean = df.drop_duplicates()  # Удалить полные дубликаты
df_partial = df.drop_duplicates(subset=['name'])  # По имени
df_last = df.drop_duplicates(keep='last')  # Оставить последний

Задание

1) Посчитайте количество полных дубликатов в прикрепленном датасете (программа должна вывести целое число)
2) Удалите все полные дубликаты и выведите размер получившегося датасета.

Пропущенные значения (NaN, None, NULL) - одна из главных проблем при анализе данных.

Поиск пропусков

df.isnull() - находит пропуски
df.isnull().sum() - считает пропуски по столбцам

 

Задание

Проанализируйте датасет супергероев, считав его из прикрепленного файла
Напишите программу, который ищет пропуски. Выведите

  1. В первой строке - количество пропусков в каждом столбце (семь целых чисел через пробел)
  2. Во второй строке - процент пропущенных значений (отбросив дробную часть) для каждого столбца  (семь целых чисел через пробел)
Числа должны быть в порядке перечисления столбцов в датасете.

Пример вывода (пример дан для понимания формата вывода):
1 2 3 2 1 1 4
10 20 30 20 10 10 40

Промахом считается выстрел с расстоянием больше 10.0. Определите, у какого игрока был самый худший одиночный выстрел (максимальное значение в массиве)? А сколько всего фатальных промахов совершила вся команда?

Тренеры заметили, что некоторые игроки сильно «разогреваются» к концу сессии. Проверьте гипотезу: сравните среднюю точность каждого игрока по первым пяти выстрелам и по последним пяти. У кого разница в пользу последних выстрелов наибольшая? (Значит, он "разыгрывается").
Точность — это хорошо, но стабильность — лучше! Найдите игрока с самой маленькой дисперсией или стандартным отклонением результатов. Это значит, что он стабильно стреляет примерно с одинаковой точностью.
⏰ Починка машины времени:
[██████████████░░░░░░] 71% - Модуль 5 из 7 восстановлен
✅ Генератор порталов: КАЛИБРУЕТСЯ
⚡ Энергия растет!

Профессор Хронос обнаружил странные сигналы!
Кто-то уже путешествовал во времени и оставил временные маячки — метки в разных эпохах.

Каждый маячок имеет координату относительно 2025 года:
  • Отрицательное число = маячок в прошлом (например, -50 означает 1975 год)
  • Положительное число = маячок в будущем (например, +30 означает 2055 год)
  • Ноль = сигнал остановки сканирования
Машина времени должна уметь сканировать временную линию и обнаруживать маячки. Необходимо написать программу для анализа найденных маячков и загрузить ее в машину времени.

Что должна делать программа:
  1. Считывать координаты маячков (числа), пока не получит сигнал стоп (число ноль)
  2. Подсчитать:
    • Сколько маячков в прошлом (отрицательные координаты)
    • Сколько маячков в будущем (положительные координаты)
    • Самый древний маячок (наименьшая координата)
  3. Вывести отчет о сканировании (смотри пример)

 

💡 Подсказка:
- Текущий год = 2025 (точка отсчета)
- Если координата = -20, это 2025 - 20 = 2005 год
- Если координата = +15, это 2025 + 15 = 2040 год
- Чем меньше число, тем дальше в прошлое!
66451#66451
Глеб очень любит компьютерные игры, потому решил впервые разработать свою игру. Он начал с чего-то максимально простого – матричного пинг-понга. Первым этапом Глеб решил сделать алгоритм, который будет считать количество набранных очков мячиком, который будет запускаться в матрице, состоящей из целых чисел.
Для того, чтобы протестировать алгоритм, Глеб указывает стартовую позицию мячика и его стартовое направление (число от 1 до 8). Мячик после прохождения через ячейку матрицы оставляет на её месте дыру, при попадании в будущем в которую игра заканчивается.
Стоит также учесть, что так как это пинг-понг, то мячик отталкивается от стенок, но в данной игре отражение действует по принципу угол отражения равен углу преломления + 45 градусов по часовой стрелке (при попадании в угол мячик отталкивается в обратном направлении + 45 градусов). Если мячик попадает в угол под углом 45 градусов, то он отражается обратно вектору попадания.
Стартовое направление мячика задаётся числом от 1 до 8. Направления представлены в виде матрицы ниже, где x – это текущая позиция мячика.
1 2 3
4 x 5
6 7 8

Входные данные
В первой строке подаются два числа N, M (1 <= N, M <= 100) – размер матрицы, далее на N строках по M целых чисел (от -10000 до 10000) вводится сама матрица. После вводится на одной строке стартовая позиция мячика (нумерация в матрице с 1), а на последней строке вводится стартовое направление мячика (число от 1 до 8).
Выходные данные
Вывести в ответе единственное число – количество набранных очков мячиком после старта.

Примечание
Пример №2: При старте из ячейки -5 по направлению 8 (в правый нижний угол), мячик ударится в угол, значит он должен отразиться в обратном направлении, но так как к углу отражения по правилам игры прибавляется 45 градусов по часовой стрелке, то мячик полетит по направлению не 1 (в левый верхний угол), а по направлению 2 (вверх). Далее отразится в обратном направлении от верхней стенки и попадёт в ячейку -5, на месте которой уже осталась дыра, потому игра окончится.
 
65983#65983
Химики смешивают несколько добавок к топливу и проверяют, при какой температуре смесь превысит заранее заданное давление. Для этого смесь нагревают в химическом реакторе. Лаборант, которого оставляют следить за реактором, пишет в текстовый файл температуру смеси, которую измеряет раз в минуту. Когда давление превышает заданное значение, процесс прекращается, реактор охлаждают и загружают новую смесь. Определите, сколько длился самый долгий нагрев смеси. При нагреве, что очевидно, температура смеси не уменьшается.

Формат ввода
На вход программе в первой строке подается натуральное число N, не превышающее 10000 – количество замеров температуры.
Во второй строке подается натуральное число X, не превышающее 1000 – пороговое значение температуры.
Далее в N строках подается по одному натуральному числу ti, не превышающему 1000 – температура смеси при измерении номер i.
Формат вывода
Вывести одно целое число – сколько минут длился самый длительный нагрев смеси.
65961#65961
Агрохолдинг «Дикое Поле» анализирует результаты сбора урожая. Известно, сколько тонн зерна убрали на каждом из N полей, находящихся в распоряжении холдинга. Так как несколько огромных полей сильно влияют на среднее, в агрохолдинге решили ввести другую метрику. Опорными называются поля, урожай с которых превышает пороговое значение, но меньше среднего. Определите наиболее часто встречающийся урожай с опорного поля.
Формат ввода
На вход программе в первой строке подаётся натуральное число N (N ≤ 1000) – количество полей. Во второй строке подаётся натуральное число M (M≤ 100 т) – пороговое значение урожая с поля. Далее в N строках идёт по одному натуральному числу mi – масса урожая с поля номер i (1≤ mi ≤1000 т).
Формат вывода
Вывести одно целое число – наиболее часто встречающийся урожай с опорного поля. Если таких значений несколько, выведите наибольшее. Если таких значений нет, выведите 0.
65872#65872
Автомат получает на вход последовательность целых чисел и складывает их по следующим правилам:
1) Если число чётное, автомат удваивает его и добавляет в сумму.
2) Если число нечётное, автомат добавляет его значение в сумму.
После обработки последовательности автомат вычитает из получившейся суммы максимальное число последовательности, кратное 3, и выводит получившееся значение как результат.
Располагая последовательностью, определите, какой результат выведет автомат.

Входные данные
На вход программе в первой строке подается натуральное число N (5 ≤ N ≤ 10000) – количество чисел. Далее в N строках подаётся по одному натуральному числу, не превышающему 1000. Если чисел, кратных 3, в последовательности нет, автомат ничего не вычитает.
Выходные данные
Вывести одно целое число – наибольшее возможное, которое можно получить по правилам, описанным в условии задачи.
65818#65818
Автомат получает на вход последовательность неотрицательных чисел, меньших 100, и работает с ними по следующим правилам:
1) Если количество единиц нечётно и превышает количество десятков,автомат добавляет количество десятков в первую контрольную сумму.
2) В противном случае автомат добавляет количество единиц во вторую контрольную сумму.
После обработки последовательности автомат вычитает меньшую сумму из большей и выводит результат.
Располагая последовательностью, определите, какой результат выведет автомат. Количество десятков в однозначном числе равно нулю.

Формат входных данных
На вход программе в первой строке подается натуральное число N (3 ≤ N ≤ 10000) – количество чисел. Далее в N строках подаётся по одному неотрицательному числу, меньшем 100.
Формат выходных данных
Вывести одно целое число – результат обработки последовательности, который можно получить по правилам, описанным в условии задачи.
65795#65795
В онлайн-симуляции одной игры был представлен алгоритм уничтожения двух квадратных матриц одинакового размера.
В самом начале симуляции задаются две матрицы, которые стоят вплотную друг к другу.
Далее происходит уничтожение матриц – строки, которые соприкасаются у двух матриц числами, которые равны, уничтожаются (пример на картинке), затем обе матрицы поворачиваются одновременно на 90 градусов по часовой стрелке и повторяется алгоритм уничтожения. Матрицы уничтожаются до тех пор, пока есть чему уничтожаться. Даже если после первого поворота ничего не уничтожилось, то может уничтожиться после нескольких.

В данном случае заданы две квадратные матрицы размер 3*3. Их поставили вплотную друг к другу, соприкасается только одна строка по одинаковым числам (строка 2).

Потому данная строка полностью удаляется в двух матрицах, потому получаем.

Далее каждая матрица вращается по часовой стрелке на 90 градусов.


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

Формат входных данных
На первой строке подаётся целое число N – размер квадратных матриц (1 <= N <= 1000).
Далее на N строках подаётся по N целых чисел в диапазоне от -1000 до 1000 – левая матрица.
Далее на N строках подаётся по N целых чисел в диапазоне от -1000 до 1000 – правая матрица.
Формат выходных данных
Вывести на одной строке через пробел сумму чисел оставшихся ячеек левой матрицы и правой матрицы, соответственно.



 

В далеком королевстве жил могучий маг по имени Максимус, который обладал уникальной способностью управлять волшебными кристаллами. Эти кристаллы были не простыми — на каждом из них написано целое число, колеблющееся от –100 000 до 100 000. Однажды, Максимус решил провести эксперимент и выяснить, сколько волшебных троек кристаллов он сможет найти.

Но не просто троек! В каждой тройке должно быть хотя бы одно число, которое таит в себе загадочную цифру 2. Кроме того, сумма чисел, записанных на этих трех кристаллах должна быть простым числом, потому что простые числа это любимые числа Максимуса. (Тройкой кристаллов Максимус считает три кристалла, которые лежат рядом.)

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

Помогите Максимиусу в его приключении! Напишите программу, которая определит количество таких троек и вычислит максимальную сумму среди них. В ответе запишите два числа: сначала количество найденных троек, затем максимальную сумму элементов таких троек.

Формат входных данных
В первой строке вводится число N (1<=N<=10 000)  - количество кристаллов, которые имеются у Максимуса. В следующих N строках, по одному в строке, вводятся N целых чисел - числа, которые записаны на кристаллах (все числа по модулю не более 100 000).


Формат выходных данных

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

Поделиться
Класснуть