Wlad967857
?>

Реализуйте алгоритм приближенного бинарного поиска. входные данные в первой строке входных данных содержатся числа n и k (0nk11 во второй строке n чисел первого массива, отсортированного по неубыванию, а в третьей строке – k чисел второго массива. каждое число в обоих массивах по модулю не превосходит 2109. выходные данные для каждого из k чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. если таких несколько, выведите меньшее из них примеры входные данные 5 5 1 3 5 7 9 2 4 8 1 6 выходные данные 1 3 7 1 5

Информатика

Ответы

steger

#Ruby 2


def getNumberByPosition(start_num, end_num, k, n = 3)

   # p [start_num, end_num, k, n]

   if not start_num.between?(10**(n - 1),10**n - 1) or not end_num.between?(10**(n - 1),10**n - 1) then return end

   s = ""

   for  i in start_num..end_num

       s += i.to_s()

   end

   number = start_num + (k-1) / n

   if number > end_num

       puts "Выход за пределы"

       return

   end

   # p number

   upper_limit = n + 1 - ((k % n == 0) ? n : k % n)

   number = number % (10**upper_limit)

   # p [number, 10**upper_limit, upper_limit]

   low_limit = upper_limit - 1

   number = number / (10**low_limit)

   # p [number, 10**low_limit, low_limit]

   puts "#{number} = #{s[k-1]}"

end

getNumberByPosition(101,150,20,3)

getNumberByPosition(101,150,21,3)

buriginast5

Кроме C++ ничего не знаю.

g++ compiler


#include <iostream>

#include <algorithm>

#include <set>

#include <iterator>


int main()

{

   std::set<int>

       set1,//Первое входное множество(A)

       set2,//Второе выходное множество(B)

       set3,//Первое выходное(разность set1 и set2)

       set4,//xz

       set5,//A пересечение B

       set6;//A объединение B

   int

       N, M,

       temp;

   

   std::cout << "Введите размер первого и второго множеств:";

   std::cin >> N >> M;

   

   

   std::cout << std::endl << "Введите значения первого множества: ";

   for(int i = 0; i < N; i++)

   {

       std::cin >> temp;

       set1.insert(temp);

   }

   

   std::cout << std::endl << "Введите значения второго множества: ";

   for(int i = 0; i < M; i++)

   {

       std::cin >> temp;

       set2.insert(temp);

   }

   std::set_difference(set1.begin(), set1.end(), set2.begin(), set2.end(), std::inserter(set3, set3.begin()));

   std::set_difference(set2.begin(), set2.end(), set1.begin(), set1.end(), std::inserter(set4, set4.begin()));

   std::set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(), std::inserter(set5, set5.begin()));

   std::set_union(set1.begin(), set1.end(), set2.begin(), set2.end(), std::inserter(set6, set6.begin()));

   

   //вывод

   std::cout << "Множество А: ";

   std::copy(set1.begin(), set1.end(),

       std::ostream_iterator<int>(std::cout, " "));

   std::cout << std::endl;

   

   std::cout << "Множество B: ";

   std::copy(set2.begin(), set2.end(),

       std::ostream_iterator<int>(std::cout, " "));

   std::cout << std::endl;

   

   std::cout << "Множество А - B: ";

   std::copy(set3.begin(), set3.end(),

       std::ostream_iterator<int>(std::cout, " "));

   std::cout << std::endl;

   

   std::cout << "Множество B - A: ";

   std::copy(set4.begin(), set4.end(),

       std::ostream_iterator<int>(std::cout, " "));

   std::cout << std::endl;

   

   std::cout << "Множество A пересечение B: ";

   std::copy(set5.begin(), set5.end(),

       std::ostream_iterator<int>(std::cout, " "));

   std::cout << std::endl;

   

   std::cout << "Множество А объединение B: ";

   std::copy(set6.begin(), set6.end(),

       std::ostream_iterator<int>(std::cout, " "));

   std::cout << std::endl;

   return 0;

}

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Реализуйте алгоритм приближенного бинарного поиска. входные данные в первой строке входных данных содержатся числа n и k (0nk11 во второй строке n чисел первого массива, отсортированного по неубыванию, а в третьей строке – k чисел второго массива. каждое число в обоих массивах по модулю не превосходит 2109. выходные данные для каждого из k чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. если таких несколько, выведите меньшее из них примеры входные данные 5 5 1 3 5 7 9 2 4 8 1 6 выходные данные 1 3 7 1 5
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Leonidovich_Elena771
Nikishina
endyurans2ooo
olimov
magichands68
centrprof20
Aleksandr-Andrei
Dmitrievich-Telishev
Марина_Мария
Komarovsergeysk
Melsan19914239
Berezovskaya
andrew55588201824
ASRodichev
Olga Arutyunyan