WpaGoravideo - Задай вопрос — получи ответ. Logo

In Информатика / 5 - 9 классы | 2025-08-25

РРешить задачу по програмированию на с++ ДАМ 60 БАЛЛОВ
На Новом проспекте для разгрузки было решено пустить два новых автобусных маршрута на
разных участках проспекта. Известны конечные остановки каждого из автобусов. Определите
количество остановок, на которых можно пересесть с одного автобуса на другой.
Вводятся четыре числа, не превосходящие 109
, задающие номера конечных остановок. Сначала для
первого, потом второго автобуса (см. примеры и рисунок).

Asked by potapeva28

Answer (1)

Условие:У нас есть проспект, на котором ездят два автобуса.Каждый автобус ходит по отрезку остановок, заданному номерами его конечных остановок.Нужно найти, на скольких остановках можно пересесть с одного автобуса на другой, т.е. количество общих остановок у двух отрезков.--- Пример из картинки:Ввод:3 6 4 2Первый автобус идёт от 3 до 6Второй автобус идёт от 4 до 2То есть маршруты:Автобус 1: {3, 4, 5, 6}Автобус 2: {2, 3, 4}Общие остановки: {3, 4}Ответ: 2---⚙ Алгоритм:1. Пусть первый отрезок — [a, b], второй — [c, d].2. Для удобства сделаем так, чтобы a <= b и c <= d (поменяем местами при необходимости).3. Найдём пересечение этих двух отрезков:\text{start} = \max(a, c), \quad \text{end} = \min(b, d)Иначе пересечения нет → ответ 0.--- Решение на C++#include <iostream>using namespace std;int main() { long long a, b, c, d; cin >> a >> b >> c >> d; // Упорядочиваем отрезки if (a > b) swap(a, b); if (c > d) swap(c, d); // Находим пересечение long long start = max(a, c); long long end = min(b, d); long long result = 0; if (start <= end) result = end - start + 1; cout << result << endl; return 0;}---✅ Для примера:Input:3 6 4 2Output:2---Хочешь, я ещё сделаю несколько проверочных примеров для разных входных данных?

Answered by albina45987 | 2025-08-26