Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному - Pascal
Формулировка задачи:
Здравствуйте,помогите пожалуйста написать код,спасибо.Реализуйте алгоритм приближенного бинарного поиска.
Входные данные
В первой строке входных данных содержатся числа N и K (0NK100001 ). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2109.
Выходные данные
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
Примеры
входные данные
5 5
1 3 5 7 9
2 4 8 1 6
выходные данные
1
3
7
1
5
Решение задачи: «Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному»
textual
Листинг программы
- const n=5;
- k=4;
- a:array[1..n] of integer=(1,4,5,8,10);
- b:array[1..k] of integer=(5,6,1,9);
- var i,j,l,r,m:integer;
- begin
- for i:=1 to n do
- write(a[i]:3);
- writeln;
- for i:=1 to k do
- write(b[i]:3);
- writeln;
- for i:=1 to k do
- begin
- l:=1;
- r:=n;
- for j:=1 to n do
- begin
- m:=(l+r) div 2;
- if a[m]>b[i] then r:=m else l:=m;
- end;
- if l<>r then
- begin
- if abs(a[r]-b[i])<abs(a[l]-b[i]) then writeln(a[r])
- else writeln(a[l]);
- end
- else writeln(a[l])
- end;
- end.
Объяснение кода листинга программы
- Объявляется константа
n
со значением 5, которая представляет количество элементов в массивеa
. - Объявляется константа
k
со значением 4, которая представляет количество элементов в массивеb
. - Создается массив
a
с 5 элементами: 1, 4, 5, 8, 10. - Создается массив
b
с 4 элементами: 5, 6, 1, 9. - Объявляются переменные
i
,j
,l
,r
,m
, все типа integer. - Начинается основная часть программы.
- Выводятся элементы массива
a
в одной строке. - Выводятся элементы массива
b
в одной строке. - Для каждого элемента
b
выполняется следующее:- Инициализируются переменные
l
иr
с начальными значениями 1 и n соответственно. - Для каждого элемента массива
a
выполняется следующее:- Инициализируется переменная
j
от 1 до n. - Вычисляется значение переменной
m
как целочисленное деление суммы переменныхl
иr
на 2. - Если a[m] > b[i], то значение переменной
r
становится равнымm
, в противном случае значение переменнойl
становится равнымm
.
- Инициализируется переменная
- После завершения цикла для каждого элемента массива
a
, выполняется следующее:- Если
l
не равноr
, то выполняется:- Если разница между a[r] и b[i] меньше, чем разница между a[l] и b[i], то выводится значение a[r].
- В противном случае выводится значение a[l].
- В противном случае, выводится значение a[l]. Надеюсь, это поможет! Если у вас есть другие вопросы или вам нужны дополнительные пояснения, не стесняйтесь спрашивать.
- Если
- Инициализируются переменные
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д