Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 17.10.2020
Сообщений: 33

Напитки из Черноголовки

26.08.2022, 10:19. Показов 4455. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никита очень любит лимонад из Черноголовки. Во время перерыва в занятии он решил купить немного своего любимого напитка. Никита знает, что в магазине лимонад продаётся в бутылках по 0.25, 0.5, 1 и 2 литра, которые стоят a,b,c,d рублей соответственно. Никита хочет купить ровно n литров лимонада, потратив при этом как можно меньше денег. Во сколько рублей Никите обойдётся покупка?

Формат входных данных

В первой строке входных данных вводится четыре целых числа a,b,c,d≤108 — стоимости бутылок лимонада по 0.25,0.5,1,2 литра соответственно.
Во второй строке входных данных вводится единственное целое число n≤ 109 — количество литров лимонада, которое хочет купить Никита.
Выведите одно целое число — ответ на задачу.

Примеры
Входные данные
18 30 70 100
3
Выходные данные
160
Входные данные
9876 987 98 9
1
Выходные данные
98
В первом примере выгодно купить одну двухлитровую бутылку и две бутылки по поллитра. Тогда Никита потратит 100+30+30=160 рублей.
Во втором примере, хотя двухлитровая бутылка стоит дешевле литровой, Никита хочет купить ровно 1 литр лимонада, поэтому ему придётся потратить 98 рублей.

Моё решение превышает максимальное время работы на одном из тестов
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a, b, c, d = tuple(map(lambda x: int(x), input().split()))
n = float(input())
summa = 0
liters = 0
while liters != n:
    if 2 * c > d and 4 * b > d and 8 * a > d and liters + 2 <= n:
        summa += d
        liters += 2
    elif liters + 1 <= n and 2 * b > c and 4 * a > c:
        summa += c
        liters += 1
    elif liters + 0.5 <= n and 2 * a > b:
        summa += b
        liters += 0.5
    else:
        summa += a
        liters += 0.25
print(summa)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.08.2022, 10:19
Ответы с готовыми решениями:

Напитки в сосудах
Здравствуйте! Помогите пожалуйста с задачей В бутылке, стакане, кувшине и банке находятся молоко, лимонад, квас и вода. Известно,...

Проект Любимые напитки
На пользовательской форме должны быть расположены 3 списка. Один из списков содержит названия напитков. Пользователь может переносить...

Задача про напитки
Собственно задача: В бутылке, стакане, кувшине и банке находятся молоко, лимонад, квас и вода. Известно, что вода и молоко не в бутылке,...

10
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
26.08.2022, 16:54
Ggosh,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
a, b, c, d = map(int, input().split())
n = float(input())
 
p = [a]
p.append(2 * a if 2 * a < b else b)
p.append(2 * b if 2 * b < c else c)
p.append(2 * c if 2 * c < d else d)
 
res = 0
while n:
    if n >= 2:
        res += p[3]
        n -= 2
        continue
    if n >= 1:
        res += p[2]
        n -= 1
        continue
    if n >= 0.5:
        res += p[1]
        n -= 0.5
        continue
    res += p[0]
    n -= 0.25
        
print(res)
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
26.08.2022, 17:20
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#a, b, c, d = tuple(map(lambda x: int(x), input().split()))
#n = float(input())
a = [18, 30, 70, 100]
n = 3
summa = 0
liters = 0
lim = [
       {'vol' : 0.25, 'cost' : 18, 'price' : 0},
       {'vol' : 0.5, 'cost' : 30, 'price' : 0},
       {'vol' : 1, 'cost' : 70, 'price' : 0},
       {'vol' : 2, 'cost' : 100, 'price' : 0}]
for i in range(0, len(lim)):
    lim[i]['cost'] = a[i]
    lim[i]['price'] = lim[i]['cost']/lim[i]['vol']
lim.sort(key=lambda x: x['price'])
i = 0
while liters<n:
    if lim[i]['vol']<=(n-liters):
        liters += lim[i]['vol']
        summa += lim[i]['cost']
    else:
        i += 1
print(liters, summa)
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
26.08.2022, 19:55
Python
1
2
x = min(4 * a, 2 * b, c)
print(n % 2 * x + n // 2 * min(2 * x, d))
1
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
26.08.2022, 21:05
Red white socks, Красиво. Но не работает. При a, b, c, d = 10 1 20 40 и n = 4.25, например.
0
8 / 7 / 1
Регистрация: 08.04.2021
Сообщений: 151
26.08.2022, 21:37
Red white socks, на ваш код система говорит неправильный ответ
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
26.08.2022, 21:38
Parramon,
Цитата Сообщение от Ggosh Посмотреть сообщение
Во второй строке входных данных вводится единственное целое число n≤ 109
0
8 / 7 / 1
Регистрация: 08.04.2021
Сообщений: 151
26.08.2022, 21:38
Parramon, n целое число
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
26.08.2022, 21:40
Цитата Сообщение от HWAA Посмотреть сообщение
Red white socks, на ваш код система говорит неправильный ответ
Если честно, это не мои проблемы
2
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
26.08.2022, 21:49
Пардоньте, невнимательно прочел...
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
26.08.2022, 22:15
Цитата Сообщение от Red white socks Посмотреть сообщение
Если честно, это не мои проблемы
Чтобы не получилось неправильного толкования моих слов - в верности своего решения на поставленную задачу я уверен на 200%.
Сравнение, например, с решением Parramon.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
def foo1 (a, b, c, d, n):
    a = [a,b,c,d]
    summa = 0
    liters = 0
    lim = [
           {'vol' : 0.25, 'cost' : 18, 'price' : 0},
           {'vol' : 0.5, 'cost' : 30, 'price' : 0},
           {'vol' : 1, 'cost' : 70, 'price' : 0},
           {'vol' : 2, 'cost' : 100, 'price' : 0}]
    for i in range(0, len(lim)):
        lim[i]['cost'] = a[i]
        lim[i]['price'] = lim[i]['cost']/lim[i]['vol']
    lim.sort(key=lambda x: x['price'])
    i = 0
    while liters<n:
        if lim[i]['vol']<=(n-liters):
            liters += lim[i]['vol']
            summa += lim[i]['cost']
        else:
            i += 1
    return summa
 
def foo2 (a, b, c, d, n):
    x = min(4 * a, 2 * b, c)
    return n % 2 * x + n // 2 * min(2 * x, d)
 
from random import randint
total, counter = 1000, 0
for _ in range(total):
    a,b,c,d = tuple([randint(1, 10**5) for _ in range(4)])
    n = randint(1, 10**5)
    if foo1 (a, b, c, d, n) == foo2 (a, b, c, d, n):
        counter += 1
print(total, counter)
 
#1000 1000
Можете подставить любое другое "правильное" решение.

А вот что не так с системой - тут ,действительно, мне дела нет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2022, 22:15
Помогаю со студенческими работами здесь

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

База данных: Напитки и шоколадные изделия
На турбо или АБС паскаль .... Впрочем без разницы ... Нужна БД (масив структур).Каждая структура составляется с элементов:Напои и...

Файлы записей: База данных Напитки
помогите плз! Нужно переделать эту программу с использованием нетипизированных файлов.: Program MAGAZ; Uses crt; TYPE Napitok...

Найдите предельное распределение спроса на эти напитки
Цепи маркова. Дискретные марковские процессы Помогите с решением задачи. Исследуется спрос на три конкурирующих напитка: Спрайт,...

мухин распивал спиртные напитки в компании Иванова и Крылова
https://pp.vk.me/c619923/v619923097/940a/S5*********.jpg Переписываем задание ручками на форум. Читайте правила, п. 5.18


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru