Для каждого из 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]. Надеюсь, это поможет! Если у вас есть другие вопросы или вам нужны дополнительные пояснения, не стесняйтесь спрашивать.
- Если
- Инициализируются переменные
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д