Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/75: Рейтинг темы: голосов - 75, средняя оценка - 4.55
4 / 3 / 1
Регистрация: 25.10.2019
Сообщений: 10

Подсчет действий на калькуляторе

07.11.2019, 22:11. Показов 14013. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи в решении следующей задачи:

Имеется калькулятор, который умеет делать только три операции:
1. Прибавить к текущему числу единицу
2. Умножить текущее число на 2
3. Умножить текущее число на 3

Изначальльное значение на калькуляторе: 1.
Определите наименьшее количество действий, необходимое, чтобы из начального числа 1 получить заданное число N.

Формат ввода
Одно целое число N.

Формат вывода
Одно целое число - минимальное количество действий, которое необходимо выполнить на данном калькуляторе.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2019, 22:11
Ответы с готовыми решениями:

Отображение действий в калькуляторе
калькулятор выполнял более 1 действия за раз и отброжал, так как в данном варианте он выполняет последнее из действии PS знаю что тем с...

Продолжение действий с результатом в калькуляторе
Есть консольное приложение калькулятор, через switch case. Как сделать так, чтоб можно было выполнять действия дальше с результатом,...

Последовательное выполнение арифметических действий в калькуляторе
Мне нужно сделать так, то бы калькулятор выполнял последовательные действия, то есть, если нажимать последовательно 5 + 3 - 2 = выводило 4 ...

5
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
07.11.2019, 22:32
Olmaris, задача на ДП.
0
4 / 3 / 1
Регистрация: 25.10.2019
Сообщений: 10
08.11.2019, 10:30  [ТС]
Решил следующим образом:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
n = int(input())
a = list([0] * ((n+1)//1))
a[1] = 0
for i in range(2, n+1):
        a[i] = n
for i in range(2, n+1):
    if a[i] > a[i - 1] + 1:
        a[i] = a[i - 1] + 1
    if i % 2 == 0:
        if a[i] > a[i // 2] + 1:
            a[i] = a[i // 2] + 1
    if i % 3 == 0:
        if a[i] > a[i // 3] + 1:
            a[i] = a[i // 3] + 1
print(a[n])
Но не проходит последний кейс по времени - ограничение 1 секунда, а у меня 1.544s, возникает вопрос как можно оптимизироваться.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
08.11.2019, 12:08
Цитата Сообщение от Olmaris Посмотреть сообщение
возникает вопрос как можно оптимизироваться.
оптимизировать можно всегда - изменив сам подход) еще можно сократить количество циклов

еще можно так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def check(num):
    if num // 3 >= 1:
        return num // 3, 3
    if num // 2 >= 1:
        return num // 2, 2
    return 1, 1
 
 
n = int(input())
count = 0
remainder = n
for _ in range(3):
    checked = check(remainder)
    remainder = remainder - checked[0] * checked[1]
    count += checked[0]
    if remainder == 0:
        break
print(count)
1
4 / 3 / 1
Регистрация: 25.10.2019
Сообщений: 10
08.11.2019, 17:22  [ТС]
Решено следующим образом:
Python
1
2
3
4
5
6
7
8
9
10
11
N = int(input())
F = [0] * (N + 1)
F[1] = 0
for i in range(2, N + 1):
  F[i] = F[i - 1]
  if i % 2 == 0 and F[i // 2] < F[i]:
    F[i] = F[i //2]
  if i % 3 == 0 and F[i //3] < F[i]:
    F[i] = F[i // 3]
  F[i] +=1
print(F[N])
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
08.11.2019, 17:24
Olmaris, вот видишь - изменил подход и сократил количество циклов, все как надо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.11.2019, 17:24
Помогаю со студенческими работами здесь

В калькуляторе сделать так, чтобы 4 последних результата любых действий сохранялись и выводились на экран
В калькуляторе нужно сделать так, чтобы 4 последних результата любых действий сохранялись и выводились на экран.Работать это должно с...

Подсчет процентов на калькуляторе
Здравствуйте. Помогите пожалуйста реализовать в калькуляторе правильный подсчет %. Должно считать примерно так:...

Подсчёт больше, чем двух чисел, в калькуляторе
Добрый день. Написала код для калькулятора, но возник один вопрос, как добавить, чтобы калькулятор мог посчитать больше, чем 2 числа?...

Подсчет статистики действий пользователей
Всем доброго дня! Есть страница на php на которую могут войти только зарегистрированные пользователи, на этой странице таблица с кнопками...

Отмена действий макроса если при выполнении действий в расчете ошибка
Доброго времени суток. Прошу помощи в решении проблемы: Есть макрос, который кнопкой из &quot;Книга1&quot; создает новую строку в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru