100БАЛЛОВ
напечатайте на C++
1)Реализуйте алгоритм приближенного бинарного поиска.
Входные данные
В первой строке входных данных содержатся числа N и K (0NK100001 ). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2109.
Выходные данные
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
2)Дано два списка чисел, числа в первом списке упорядочены по неубыванию. Для каждого числа из второго списка определите номер первого и последнего появления этого числа в первом списке.
Входные данные
В первой строке входных данных записано два числа N и M (1NM20000 ). Во второй строке записано N упорядоченных по неубыванию целых чисел — элементы первого списка. В третьей строке записаны M целых неотрицательных чисел - элементы второго списка. Все числа в списках - целые 32-битные знаковые.
Выходные данные
Программа должна вывести M строчек. Для каждого числа из второго списка нужно вывести номер его первого и последнего вхождения в первый список. Нумерация начинается с единицы. Если число не входит в первый список, нужно вывести одно число 0.
300
500
Ответы на вопрос:
То, что написал alex - это не функция проверки признака делимости, а стандартная функция остатка от деления, которая тебе не подходит. признак делимости на 11 такой. нужно отдельно сложить цифры, стоящие на нечетных местах - 1, 3, 5, до конца, и отдельно цифры, стоящие на четных местах - 2, 4, 6, тоже до конца. потом вычитаешь из большего числа меньшее. если разность = 0 или делится на 11, то и все число делится на 11. я паскаль плохо знаю, поэтому опишу только алгоритм. 1) вводим начальное число n. 2) объявляем массив m[length(n)] длиной, равной количеству цифр числа. 3) делаем в цикле a : = n mod 10; m[i] : = a; n : = int(n / 10); i : = i+1; продолжаем цикл до тех пор, пока n > 0. 4) s1 : = 0; цикл от 1 до length(n) с шагом 2: s1 : = s1 + a[i]; 5) s2 : = 0; цикл от 2 до length(n) с шагом 2: s2 : = s2 + a[i]; 6) raznost : = abs(s1 - s2); 7) если raznost mod 11 = 0 тогда ответ да, иначе ответ нет. 8) конец
Популярно: Информатика
-
Фидан7771418.05.2022 06:19
-
Vetvika3130.11.2022 12:16
-
xenyazhardin29.11.2020 08:02
-
Боженька20626.11.2022 06:23
-
20Sascha0714.07.2021 01:31
-
pya9804.04.2022 16:13
-
АлёнаKet23414.05.2022 17:43
-
Theknopa44416.02.2023 18:39
-
mirza2206.11.2021 13:52
-
rous5903.12.2020 05:38