Решить легким Задача №4. Двоичный поиск
Реализуйте алгоритм бинарного поиска.
Входные данные
В первой строке входных данных содержатся натуральные числа N и K (0
Выходные данные
Требуется для каждого из K чисел вывести в отдельную строку "YES", если это число встречается в первом массиве, и "NO" в противном случае.
Примеры
входные данные
10 5
1 2 3 4 5 6 7 8 9 10
-2 0 4 9 12
выходные данные
NO
NO
YES
YES
NO
1) 1 Килобайт = 1024 Байтов
1 Мегабайт = 1024 Килобайтов (1024 Б * 1024 Б)
=> 1572864 : 1024 = 1536 КБ (Килобайт)
(1536 ←(1572864 Б) : 1024 = 1,5 МБ ⇔ Окончательный ответ)
2) 1 Байт = 8 Битов
=> 20480 : 8 = 2560
20480 Бит = 2560 Байт
(2560 ←(20480 Бит): 1024 = 2,5 КБ ⇔ Окончательный ответ )
3) 4194304 Байт = 4096 Кб
(4096 Кб = 4 Мб ⇔ Окончательный ответ)
4)40960 Бит = 5120 Байт
(5120 Байт = 5 Кб ⇔ Окончательный ответ)
5) 3145728 Байт = 3072 Кб
(3072 Кб = 3 Мб ⇔ Окончательный ответ)
6) 155648 Бит = 19456 Байт
(19456 Байт = 19 Кб ⇔ Окончательный ответ)
во всех этих задачах используются 2 формулы (объем)I=k*i; (мощность)N=2^i
1) 8=2^i => i=3, объём= 3*20=60 бит
2)вес одного символа 4096/1024=4 бит => i=4, мощность (N) = 2^i => N=2^4=16
3)12288/8=1536 байт, далее 1536/1024=1,5 Кбайт
4)для начала переведем объем кбайт и биты. (из предыдущей задачи это 12288 бит); после найдем i i=12288/4096=3. далее мощность (N)=2^3=8
5)один символ занимает 4 бита (2^4=16) 1/64 часть мегабайта = 1024 * 1024 * 8 / 64 = 131072 бита значит 131072 / 4= 32768 символов.
6)находим количество(k) 4*30*50=6000, кол-во информации (объем (I) ) из байт переводим в бит. 4500*8=36000 бит. далее находим i; i=I(объем)/k(кол-во); i=36000/6000=6. N=2^6=64.
7)может не 1,5*1023, а 1,5*10^23? N=4; i=2. находим объём 2*1,5*10^23. I=3*10^23.
8)всего двухзначных чисел 100. (00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12 и тд. ) значит 2^i=100. близжайшее значение i в данном случае 7. Так как если 6, то 2^6=64, 100-64=36. если i=7, то 2^7=128. 100-128=-28 (ну по факту разница в 28 единиц.) что ближе 36 или 28? следовательно ответ 7.