1) Напишите программу на C++, которая реализует алгоритм бинарного поиска с приближением. Вводные данные включают числа N и K (0 < N < K < 100001) в первой строке. Во второй строке представлены N чисел, отсортированных по возрастанию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах не превышает по модулю 2109. Результаты выводятся по одному числу в каждой строке для каждого из K чисел из второго массива. Выводится число из первого массива, которое наиболее близко к данному второму числу. В случае, если есть несколько чисел, выбирается наименьшее из них.
2) У вас есть два списка чисел. Числа в первом списке упорядочены по возрастанию
2) У вас есть два списка чисел. Числа в первом списке упорядочены по возрастанию
Золотой_Горизонт
Конечно, я могу помочь с написанием программы на C++, реализующей алгоритм бинарного поиска с приближением. Вот подробное пошаговое решение задачи.
Шаг 1: Считывание входных данных
Для начала, нам необходимо считать входные данные. Мы будем использовать функции ввода-вывода в C++. Для этого вы можете использовать следующий код:
\[
\text{{\#include}} \\
\text{{\#include}} \\
\\
\text{{int main() \{}} \\
\text{{\ \ \ \ int N, K;}} \\
\text{{\ \ \ \ std::cin >> N >> K;}} \\
\\
\text{{\ \ \ \ int firstArray[N], secondArray[K];}} \\
\text{{\ \ \ \ for (int i = 0; i < N; i++) \{}} \\
\text{{\ \ \ \ \ \ \ \ std::cin >> firstArray[i];}} \\
\text{{\ \ \ \ \}}} \\
\text{{\ \ \ \ for (int i = 0; i < K; i++) \{}} \\
\text{{\ \ \ \ \ \ \ \ std::cin >> secondArray[i];}} \\
\text{{\ \ \ \ \}}} \\
\text{{\}\}}
\]
Этот код позволяет считать значения N и K из первой строки, а затем значения N чисел первого массива и K чисел второго массива из следующих двух строк.
Шаг 2: Реализация алгоритма бинарного поиска с приближением
Теперь мы можем приступить к реализации алгоритма бинарного поиска с приближением. Для этого мы будем использовать следующий код:
\[
\text{{int binarySearch(int array[], int left, int right, int target) \{}} \\
\text{{\ \ \ \ int closestNumber = array[left];}} \\
\text{{\ \ \ \ while (left <= right) \{}} \\
\text{{\ \ \ \ \ \ \ \ int mid = left + (right - left) / 2;}} \\
\text{{\ \ \ \ \ \ \ \ if (array[mid] == target) \{}} \\
\text{{\ \ \ \ \ \ \ \ \ \ \ \ return array[mid];}} \\
\text{{\ \ \ \ \ \ \ \ \}}} \\
\text{{\ \ \ \ \ \ \ \ if (std::abs(array[mid] - target) < std::abs(closestNumber - target)) \{}} \\
\text{{\ \ \ \ \ \ \ \ \ \ \ \ closestNumber = array[mid];}} \\
\text{{\ \ \ \ \ \ \ \ \}}} \\
\text{{\ \ \ \ \ \ \ \ if (array[mid] < target) \{}} \\
\text{{\ \ \ \ \ \ \ \ \ \ \
Шаг 1: Считывание входных данных
Для начала, нам необходимо считать входные данные. Мы будем использовать функции ввода-вывода в C++. Для этого вы можете использовать следующий код:
\[
\text{{\#include
\text{{\#include
\\
\text{{int main() \{}} \\
\text{{\ \ \ \ int N, K;}} \\
\text{{\ \ \ \ std::cin >> N >> K;}} \\
\\
\text{{\ \ \ \ int firstArray[N], secondArray[K];}} \\
\text{{\ \ \ \ for (int i = 0; i < N; i++) \{}} \\
\text{{\ \ \ \ \ \ \ \ std::cin >> firstArray[i];}} \\
\text{{\ \ \ \ \}}} \\
\text{{\ \ \ \ for (int i = 0; i < K; i++) \{}} \\
\text{{\ \ \ \ \ \ \ \ std::cin >> secondArray[i];}} \\
\text{{\ \ \ \ \}}} \\
\text{{\}\}}
\]
Этот код позволяет считать значения N и K из первой строки, а затем значения N чисел первого массива и K чисел второго массива из следующих двух строк.
Шаг 2: Реализация алгоритма бинарного поиска с приближением
Теперь мы можем приступить к реализации алгоритма бинарного поиска с приближением. Для этого мы будем использовать следующий код:
\[
\text{{int binarySearch(int array[], int left, int right, int target) \{}} \\
\text{{\ \ \ \ int closestNumber = array[left];}} \\
\text{{\ \ \ \ while (left <= right) \{}} \\
\text{{\ \ \ \ \ \ \ \ int mid = left + (right - left) / 2;}} \\
\text{{\ \ \ \ \ \ \ \ if (array[mid] == target) \{}} \\
\text{{\ \ \ \ \ \ \ \ \ \ \ \ return array[mid];}} \\
\text{{\ \ \ \ \ \ \ \ \}}} \\
\text{{\ \ \ \ \ \ \ \ if (std::abs(array[mid] - target) < std::abs(closestNumber - target)) \{}} \\
\text{{\ \ \ \ \ \ \ \ \ \ \ \ closestNumber = array[mid];}} \\
\text{{\ \ \ \ \ \ \ \ \}}} \\
\text{{\ \ \ \ \ \ \ \ if (array[mid] < target) \{}} \\
\text{{\ \ \ \ \ \ \ \ \ \ \
Знаешь ответ?