Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/466: Рейтинг темы: голосов - 466, средняя оценка - 4.61
12 / 10 / 3
Регистрация: 09.10.2018
Сообщений: 49

Подсчитать минимальное количество действий, которые надо совершить обезьянке, чтобы получить кучу из n камней

19.10.2018, 19:19. Показов 95399. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Цирк, цирк, цирк!

Цирковая обезьянка еще не может быть полноценным игроком в Ним, но она обучена либо удваивать количество камней в куче, либо добавлять один.

Напишите программу, подсчитывающую минимальное количество действий, которые надо совершить обезьянке, чтобы получить кучу из n камней. Изначально в распоряжении циркачки всего один камень.

Формат ввода
Строка, содержащая число n - необходимое количество камней в куче.

Формат вывода
Число - необходимое количество шагов.

Пример 1
Ввод
11

Вывод
5
Пример 2
Ввод
3
Вывод
2

Есть код, но когда я к примеру ввожу 4, то программа ничего не делает(то есть просто зависла)
Python
1
2
3
4
5
6
7
8
9
10
11
a = int(input())
summ = 1
summ = summ + 1
h = 1
while summ != a:
    if summ * 2 < a:
        summ *= 2
    if summ * 2 > a:
        summ += 1
    h += 1
print(h)
Кто может, исправьте код пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2018, 19:19
Ответы с готовыми решениями:

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

Какое минимальное число таких действий нужно совершить Ирме, чтобы упорядочить книги?
Ирма работает в библиотеке. Каждый день она наблюдает, как посетители берут пару книг с полки, читают их, затем ставят на те же места,...

Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром
Здравствуйте, помогите пожалуйсто, был бы очень признателен хотя бы за идею решения(поидеи методом ветвей и границ она решается) ...

23
0 / 0 / 1
Регистрация: 14.11.2018
Сообщений: 1
14.11.2018, 15:01
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n = int(input())
count = 1
c = 0
if n == 2:
    n = 0
    c = 1
if n == 3:
    n = 0
    c = 2
while count < n:
    if n / 2 != n // 2:
        n = n - 1
        c = c + 1      
    if n / 2 == n // 2 and n >= 2:
        n = n // 2 - 1
        c = c + 2
print(c)
Код вроде полностью исправен, но случай с 2 и 3 написаны на отвали.
0
0 / 0 / 0
Регистрация: 19.10.2019
Сообщений: 1
21.10.2019, 16:55
Берешь число которое вводит пользователь, проверяешь четное или нет, делишь на два или вычитаешь один, соответственно, и так пока не останется единица, и считаешь ходы
0
0 / 0 / 0
Регистрация: 23.10.2019
Сообщений: 1
23.10.2019, 17:31
Цитата Сообщение от grizlik78 Посмотреть сообщение
Python
1
2
3
4
5
6
7
a = int(input())
count = 0
 
while a > 1:
    count += 1 + a % 2
    a //= 2
print(count)
можешь обьяснить как нибудь, пожалуйста
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
23.10.2019, 17:50
Было б что объяснять. Если очередное число чётное, то оно получено из предыдущего только умножением на 2, поэтому увеличиваем счётчик на 1. Если число нечётное, то кроме умножения на 2 использовалось ещё прибавление 1, поэтому увеличиваем счётчик на 2. Делим число нацело на 2, чтобы перейти к предыдущему. И так до тех пор, пока не дойдём до единицы.

a % 2 равно единице для нечётного и нулю для чётного.
a //= 2 уменьшает число в 2 раза с отбрасыванием дробной части.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2019, 17:50

Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром
Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром например: ввод aziz ...

Определить минимальное количество монет которое нужно потратить чтобы число камней начало делиться нацело на 5
На столе лежит n камней. За 1 монетку вы можете сделать одну из следующих операций: 1. Забрать со стола один камень. Вы не можете...

По описанию карточек определяет, какое минимальное число действий должен совершить Петя
Вася с Петей играют в следующую игру. Вася берет n картонных карточек, и на каждой из них с обеих сторон пишет по числу. После этого он...

По описанию карточек определить, какое минимальное число действий должен совершить Николай?
Арман с Николаем играют в следующую игру. Арман берет n картонных карточек, и на каждой из них с обеих сторон пишет по числу. После этого...

Минимальное количество действий, чтобы сделать все башенки одинаковой высоты
Всего утята собрали n башенок. В i-й башенке оказалось ai кубиков, поставленных друг на друга. Скрудж заметил, что башенки имеют разную...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru