Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/141: Рейтинг темы: голосов - 141, средняя оценка - 4.72
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 40

Сложность двоичного поиска. Бинарный поиск

18.07.2020, 14:34. Показов 31681. Ответов 17

Студворк — интернет-сервис помощи студентам
Сложность двоичного поиска
Вася загадал число от 1 до N. За какое наименьшее количество вопросов (на которые Вася отвечает "да" или "нет") Петя может заведомо угадать Васино число?

Входные данные

Вводится одно натуральное число N, не превосходящее 10000.

Выходные данные

Выведите наименьшее количество вопросов, которого гарантированно хватит Пете, чтобы угадать Васино число.

Примеры
Ввод
5
Вывод
3
Помогите, пожалуйста, уважаемые программисты!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2020, 14:34
Ответы с готовыми решениями:

Сложность двоичного поиска
Сложность двоичного поиска Вася загадал число от 1 до N. За какое наименьшее количество вопросов (на которые Вася отвечает "да"...

Бинарный поиск (Сложность двоичного поиска)
Вася загадал число от 1 до N. За какое наименьшее количество вопросов (на которые Вася отвечает "да" или "нет") Петя...

Сложность двоичного поиска
Помогите пожалуйста решить задачую Заранее спасибо! Вася загадал число от 1 до N. За какое наименьшее количество вопросов (на которые...

17
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.07.2020, 16:20
Лучший ответ Сообщение было отмечено Вия как решение

Решение

Python
1
print(ceil(log(int(input()), 2)))
1
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 40
18.07.2020, 23:50  [ТС]
iSmokeJC, Программа выдаёт ошибку в процессе выполнения
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.07.2020, 07:57
Вия, говорят, чтобы библиотечные функции работали - нужно делать их импорт.
Может не врут?
1
5 / 4 / 1
Регистрация: 23.05.2020
Сообщений: 22
19.07.2020, 14:52
Вия, from math import * должно помочь
1
6 / 5 / 1
Регистрация: 25.05.2020
Сообщений: 17
19.07.2020, 17:56
Лучший ответ Сообщение было отмечено Вия как решение

Решение

Python
1
2
3
4
5
6
7
n = int(input())
k = 0
m = 1
while m < n :
    m = m *2
    k += 1
print(k)
4
1 / 1 / 0
Регистрация: 12.07.2020
Сообщений: 42
20.07.2020, 18:38
AndreyNill, Большое спасибо!!! Ваш код работает!!!
0
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,326
21.07.2020, 10:59
Цитата Сообщение от Вия Посмотреть сообщение
Программа выдаёт ошибку в процессе выполнения
Это потому, что некоторые программисты забывают о том, что когда-то сами были новичками, и наивно полагают, что даже новичок должен знать стандартную библиотеку пайтон как свои 5 пальцев, а значит и все необходимые импорты должен делать интуитивно.

Целиком код товарища iSmokeJC должен был выглядеть так:
Python
1
2
3
from math import ceil, log
 
print(ceil(log(int(input()), 2)))
или, например, так:
Python
1
2
3
from math import ceil, log2
 
print(ceil(log2(int(input()))))
ну или на худой конец так:
Python
1
2
3
import math
 
print(math.ceil(math.log(int(input()), 2)))
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.07.2020, 11:21

Не по теме:

Ну вот и в мой огород камень прилетел...


Цитата Сообщение от stake-k26 Посмотреть сообщение
некоторые программисты забывают о том, что когда-то сами были новичками
Отнюдь! И еще я не забываю о том, что я когда начинал, никогда не просил дать мне готовый код. И в первейшую очередь задавал вопрос гуглу, а не сообществу. Тем более, в приведенной мною строчке достаточно ясно видно, какие именно функции используются, а уж импорт можно было бы увидеть 100500 раз даже на форуме, не говоря про гугл. Если все человеку преподносить на блюдечке, чтобы он даже не мог позаботится о таких базовых вещах - он никогда и ничему не научится. И какой тогда в этом вообще смысл?
Цитата Сообщение от stake-k26 Посмотреть сообщение
даже новичок должен знать стандартную библиотеку пайтон как свои 5 пальцев
Опять же нет. Все выучить невозможно. Нужно знать что в-принципе может стандартная библиотека. Для этого достаточно 1(!) раз прочитать хоть что-нибудь, чтобы иметь представление. Дальше - гугл и оф.дока.

Я не считаю себя каким-то охренительным программистом, и уж тем более никого не собираюсь учить жизни, просто выразил свое имхо.
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
21.07.2020, 11:25
Цитата Сообщение от stake-k26 Посмотреть сообщение
Это потому, что некоторые программисты забывают о том, что когда-то сами были новичками
Это очень распространенная отмазка. Очень часто слышу от людей которые ленятся читать и что то искать. Библиотека math практически везде(даже в говноонлайн курсах) чуть ли не первым делом пихают в морду на изучение, и тут же приводят примеры. Даже если загуглить: python ceil doc, то сразу попадаешь на офф. сайт с документацией, где разжевано(даже примеры есть!) что это и как использовать это.
0
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,326
21.07.2020, 12:12
iSmokeJC, DmFat, вас послушать, так и форум не нужен. Если все и так можно найти в гугле, то зачем тогда вообще форум? Так получается?

А я, например, помню как когда-то гуглил инфу.. по рандому, что ли. И мне попадались страницы тех самых онлайн курсов, на которых, например, просто указывалось:
random.seed()
random.randint()

и при этом нигде не было указано, что нужно импортировать random. И это те самые результаты всемогущего гугления, которые должны направить каждого новичка на путь истинный. Да вы и сами попробуйте сейчас загуглить "python log", уверен, что ссылки будут не о математическом методе log(), а о том, как сделать логирование программы. И такие руководства скорее всего пишут люди с точно таким же мнением, как и ваше: сам загуглит..

Ну я и гуглил.. И знаете сколько времени понадобилось, чтобы выяснить, что же нужно сделать, чтобы эти чертовы seed() и randint() заработали?

Это сейчас я могу со смехом вспоминать те далекие времена, а вот тогда мне было совсем не смешно.

Добавлено через 2 минуты
Если в двух словах, мое мнение таково: либо выкладывай рабочий код полностью, либо не выкладывай ничего. В обоих случаях никаких камней в огород не полетит.
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
21.07.2020, 12:33
stake-k26, повторюсь: форум нужен для решения каких то реальных проблем или тонкостях языка которые передаются от одного к другому, когда нет документов на модуль(что мало вероятно) и т.д. А кидать тупо текст задания и ждать пока кто то решит, а потом начать выеживаться что не написали import math, то с твоей точки потребителя, да, форум не нужен, нужен сайт который за бабки будет решать. Тут и так куча альтруистов, которые помогают бесплатно, тратя свое драгоценное время(когда могли бы сходить за кружечкой кофе, пока компилится программа).

Я ввел в гугл: "python log x" и о чудо, тут же ссылка на модуль "math", шок!

Я уже писал - когда я начал изучать программирование сам, без онлайн курсов, видео с ютубчика, а с книжками и с сайтом docs.python.org, у меня таких глупых вопросов не возникало.
0
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,326
21.07.2020, 12:37
DmFat, для самых одаренных:
Python
1
print("python log" == "python log x")
Добавлено через 32 секунды
и никакого шока не будет
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
21.07.2020, 12:41
stake-k26, хорошо, на вашем же примере:

Python
1
2
if not ability_to_seek_information and not logic and not intellect:
    dispute.close()
0
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,326
21.07.2020, 12:54
DmFat, я прекрасно понимаю, что вы продолжаете отстаивать свое мнение, однако посмотрите выше, я уже написал свою точку зрения, привел конкретные примеры и так далее, так с чего вы взяли, что я возьму и соглашусь? Потому что вы всегда правы?

Ну, быть пупом земли - это здорово, конечно, особенно когда твой сосед по апартаментам - Наполеон, но за пределами желтого дома это не проходит.

далее,
Цитата Сообщение от DmFat Посмотреть сообщение
форум нужен для решения каких то реальных проблем или тонкостях языка
я хоть сейчас могу привести тонну разнообразных тем, где люди просто просят написать программу. Это вам форум нужен для каких-то там тонкостей, однако огромное количество народа с вами просто не согласится.

Или например, приходит человек и просит конвертировать программу с одного ЯП на другой.. тут тоже речь о тонкостях? Бред чистой воды.

Далее, если уж, опять же, опираясь исключительно на ваши слова: "форум нужен для решения каких то реальных проблем", -то позвольте допросить, вот в заголовке указана конкретная проблема, хоть в одном вашем сообщении есть ее решение? Нет? Тогда чего флудим?

Потому что за живое задели? Ах! Вах, как это так чье-то мнение не совпадает с моим?

А вот так, не совпадает и все тут. Стена там --> можете приступать.
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
21.07.2020, 13:17
Ладно, давай все разберем на языке йопта-скрипта:

Цитата Сообщение от stake-k26 Посмотреть сообщение
конвертировать программу с одного ЯП на другой
Это не проблема, это заказ.

Цитата Сообщение от stake-k26 Посмотреть сообщение
вот в заголовке указана конкретная проблема
В заголовке указана не проблема, а название задачки. Окей, гуглим, вот прям как есть, оп, третья ссылка на статью, что такое бинарный поиск, как он происходит, даже шаги итерации прописаны!

Цитата Сообщение от stake-k26 Посмотреть сообщение
хоть в одном вашем сообщении есть ее решение? Нет?
Ну да, т. к. ее уже решили, но пролетела фраза обвиняющая всех и вся людей, я зацепился, я ответил.
Скопипасть код, и давануть знания, что оказывается надо было строчку дописать, да и я так могу: некоторые программисты считают себя профессионалами забывая что они новички, надо сделать вот так:

Python
1
2
3
4
# -*- mode: python ; coding: utf-8 -*-
import math
 
print(math.ceil(math.log(int(input()), 2)))
0
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,326
21.07.2020, 13:28
Согласен, местами перегнул, однако вот тут вы не правы:
Цитата Сообщение от DmFat Посмотреть сообщение
но пролетела фраза обвиняющая всех и вся людей
В сообщении был указан ник конкретного человека, что он и сам прекрасно заметил, и даже отписался по этому вопросу. Конкретно к вам или к кому-то из отсутствующих это сообщение не имело никакого отношения. Так что и цепляться смысла не было.
1
17 / 17 / 0
Регистрация: 16.06.2020
Сообщений: 24
21.07.2020, 15:55
DmFat, вы забыли

Python
1
2
3
4
from forum import dispute
 
if not ability_to_seek_information and not logic and not intellect:
    dispute.close()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2020, 15:55
Помогаю со студенческими работами здесь

Сложность двоичного поиска
Задача. Вася загадал число от 1 до N. За какое наименьшее количество вопросов (на которые Вася отвечает «да» или «нет») Петя может заведомо...

Бинарный поиск: определить сложность алгоритма
Кто может объяснить, как мне тут понять сложность алгоритма? #include&lt;iostream&gt; #include &lt;ctime&gt; using namespace std; ...

Реализовать два метода поиска строк в массиве: поиск перебором, бинарный поиск
Массив длины 15 заполнен строками, упорядоченными лексикографически без повторов: список зарегистрированных посетителей ...

методы поиска(бинарный поиск/С++)
методы поиска(бинарный поиск/С++) Я не проф.,плз ответы(у мя последний зачё1т) тут всего 3вопросы заранее спс #include...

Алгоритмы линейного поиска, линейного поиска с барьером, бинарный поиск
Задан одномерный массив целых чисел A. Найти первый нулевой и последний положительные элементы и поменять их местами.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru