Сдать решение задачи C-1-Предприниматель Дмитрий (тест 1)
Оставшиеся посылки: 100
Предприниматель Дмитрий (тест 1)
Эта задача с открытыми тестами. Ее решением является набор ответов, а не программа на языке программирования. Тесты указаны в самом условии, от вас требуется лишь ввести ответы на них в тестирующую систему.
Предприниматель Дмитрий решил, что хочет заняться выпечкой кренделей. Недавно он получил самый первый и самый важный заказ на выпечку
N
кренделей, на исполнение которого у него есть всего
K
дней.
В самом начале у Дмитрия нет кренделей для заказа. В день сам Дмитрий может выпечь только
A
кренделей. Если он накопит некоторое количество кренделей, он сможет нанять на них знакомых, занимающихся выпечкой — Викторию или Алексея. Виктория согласна помочь Дмитрию, если он даст ей в подарок
B
v
кренделей, а Алексей — если получит в подарок
B
a
кренделей.
Помогают Виктория и Алексей следующим образом:
1. Дмитрий дарит знакомому количество кренделей, которое тот просил, и тратит один день на его обучение выпечке кренделей по особой технологии. Таким образом, в этот день Дмитрий потратит уже накопленные крендели на знакомого, и не будет ничего выпекать сам, потому что занят обучением. Дмитрий не может одновременно обучать Викторию и Алексея, если он хочет нанять обоих, ему надо потратить два дня.
2. Со следующего дня после обучения знакомый начинает помогать Дмитрию, выпекая некоторое количество кренделей каждый день. Виктория будет выпекать дополнительно по
C
v
кренделей каждый день, а Алексей по
C
a
кренделей.
Так как вы грамотный бизнес-аналитик, Дмитрий решил попросить вас помочь ему в составлении плана для выполнения заказа.
Вам необходимо написать через пробел последовательность команд для Дмитрия в каждый из
K
дней, в которой каждая команда будет записываться цифрой от 1 до 3 и обозначать следующее:
1 — Дмитрий выпекает крендели;
2 — Дмитрий тратит весь день на обучение Виктории выпечке кренделей и отдает ей
B
v
кренделей. Таким образом, в этот день сам Дмитрий только отдаст
B
v
кренделей, а во все последующие дни Виктория будет выпекать дополнительно
C
v
кренделей;
3 — Дмитрий тратит весь день на обучение Алексея выпечке кренделей и отдаёт ему
B
a
кренделей. Таким образом, в этот день сам Дмитрий только отдаст
B
a
кренделей, а во все последующие дни Алексей будет выпекать дополнительно
C
a
кренделей.
В результате должна получиться последовательность из
K
цифр от 1 до 3, записанная через пробел. Когда Дмитрий закончит выполнять команды, у него должно быть не менее
N
кренделей. Гарантируется, что при правильной стратегии Дмитрий может выполнить заказ.
Примечание
Тест №1:
N
=
12
,
K
=
4
,
A
=
3
,
B
v
=
2
,
C
v
=
2
,
B
a
=
1
,
C
a
=
1
;
Тест №2:
N
=
43
,
K
=
6
,
A
=
7
,
B
v
=
10
,
C
v
=
6
,
B
a
=
8
,
C
a
=
4
;
Тест №3:
N
=
118
,
K
=
10
,
A
=
11
,
B
v
=
43
,
C
v
=
10
,
B
a
=
13
,
C
a
=
5
;
Тест №4:
N
=
420
,
K
=
15
,
A
=
21
,
B
v
=
12
,
C
v
=
9
,
B
a
=
10
,
C
a
=
7
Математична модель:
1. Вхідні дані:
— Значення
— Значення
2. Кінцеві результати:
— Значення виразу:
3. Формули:
— Значення виразу:
Компоненти форми:
1. Вхідні дані:
— Поле для введення значення
— Поле для введення значення
2. Результат:
— Мітка для виведення результату обчислення виразу
3. Кнопка:
— Кнопка для обчислення значення виразу
Обробник події Click для кнопки:
def calculate_remaining_money():
try:
# Отримати введені дані
inputs = [
float(entry.get()) for entry in (
entry_cookie_price_per_gram, entry_milk_price_per_packet,
entry_bread_price, entry_cookie_amount, entry_milk_amount,
entry_bread_amount, entry_initial_money
)
]
# Обчислити загальну вартість покупок
total_purchase_cost = sum(inputs[:3]) * inputs[3] + sum(inputs[3:6]) * inputs[4] + inputs[5] * inputs[6]
# Обчислити суму грошей, що залишиться
remaining_money = inputs[6] — total_purchase_cost
# Вивести результат
result_label.config(text=f»Залишиться грошей: {remaining_money:.2f}»)
except ValueError:
result_label.config(text=»Помилка: введіть числові дані»)
import tkinter as tk
window = tk.Tk()
window.title(«Обчислення залишку грошей»)
labels = [
«Ціна за 1 г печива:», «Ціна за 1 пакет молока:», «Ціна за 1 хліб:»,
«Кількість г печива:», «Кількість пакетів молока:», «Кількість хліба:»,
«Сума грошей, яку Марійка має:»
]
entries = []
for i, label_text in enumerate(labels):
label = tk.Label(window, text=label_text)
label.grid(row=i, column=0, padx=5, pady=5, sticky=»e»)
entry = tk.Entry(window)
entry.grid(row=i, column=1, padx=5, pady=5)
entries.append(entry)
result_label = tk.Label(window, text=»»)
result_label.grid(row=len(labels), columnspan=2, padx=5, pady=5)
calculate_button = tk.Button(window, text=»Обчислити», command=calculate_remaining_money)
calculate_button.grid(row=len(labels) + 1, columnspan=2, padx=5, pady=5)
window.mainloop()
Цей код створює вікно програми з полями для введення значень та , кнопкою «Обчислити» та міткою для виведення результату. Після натискання кнопки викликається функція `calculate_expression()`, яка обчислює значення виразу і виводить його на форму.
Математична модель:
1. Вхідні дані:
— Ціна за 1 г печива
— Ціна за 1 пакет молока
— Ціна за 1 хліб
— Кількість грам печива
— Кількість пакетів молока
— Кількість хліба
— Сума грошей, яку Марійка має
2. Кінцеві результати:
— Сума грошей, яка залишиться у Марійки
3. Формули:
— Загальна вартість печива: 1 г печива×кількість грам печива
— Загальна вартість молока: 1 пакет молока×кількість пакетів молока
— Вартість хліба: ціна за 1 хліб x кількість хліба
— Загальна сума покупок: сума вартостей печива, молока і хліба
— Сума грошей, яка залишиться: сума грошей Марійки мінус загальна сума покупок
Компоненти форми:
1. Вхідні дані:
— Поле для введення ціни за 1 г печива
— Поле для введення ціни за 1 пакет молока
— Поле для введення ціни за 1 хліб
— Поле для введення кількості грам печива
— Поле для введення кількості пакетів молока
— Поле для введення кількості хліба
— Поле для введення суми грошей, яку Марійка має
2. Результат:
— Мітка для виведення суми грошей, яка залишиться у Марійки
3. Кнопка:
— Кнопка для обчислення та відображення суми грошей, яка залишиться у Марійки
Обробник події Click для кнопки:import tkinter as tk
def calculate_remaining_money():
try:
inputs = [float(entry.get()) for entry in entries]
total_purchase_cost = sum(inputs[:3]) * inputs[3] + sum(inputs[3:6]) * inputs[4] + inputs[5] * inputs[6]
remaining_money = inputs[6] — total_purchase_cost
result_label.config(text=f»Залишиться грошей: {remaining_money:.2f}»)
except ValueError:
result_label.config(text=»Помилка: введіть числові дані»)
window = tk.Tk()
window.title(«Обчислення залишку грошей»)
labels = [
«Ціна за 1 г печива:», «Ціна за 1 пакет молока:», «Ціна за 1 хліб:»,
«Кількість г печива:», «Кількість пакетів молока:», «Кількість хліба:»,
«Сума грошей, яку Марійка має:»
]
entries = []
for i, label_text in enumerate(labels):
label = tk.Label(window, text=label_text)
label.grid(row=i, column=0, padx=5, pady=5, sticky=»e»)
entry = tk.Entry(window)
entry.grid(row=i, column=1, padx=5, pady=5)
entries.append(entry)
result_label = tk.Label(window, text=»»)
result_label.grid(row=len(labels), columnspan=2, padx=5, pady=5)
calculate_button = tk.Button(window, text=»Обчислити», command=calculate_remaining_money)
calculate_button.grid(row=len(labels) + 1, columnspan=2, padx=5, pady=5)
window.mainloop()