
В старину на Руси для измерения объёма использовали величины шкалик, чарка, штоф, ведро и бочка.
При этом: · 1 чарка = 2 шкалика; · 1 штоф = 10 чарок; · 1 ведро = 10 штофов; · 1 бочка = 40 вёдер. На вход программы подаётся натуральное число N – объём объекта в шкаликах. Нужно написать программу, которая возвращает 5 неотрицательных целых чисел A, B, C, D, E – количество бочек, вёдер, штофов, чарок и шкаликов соответственно, в сумме дающих ровно N шкаликов. При этом, значение E должно быть меньше 2 (так как 2 шкалика дают чарку), D и C должны быть меньше 10 (так как 10 чарок дают штоф, а 10 штофов – ведро), значение B должно быть меньше 40 (так как 40 вёдер дают бочку). Описание входных и выходных данных На вход программы подаётся натуральное число N (1 меньше или равно N меньше или равно 100000). В качестве результата программа должна напечатать через пробел 5 неотрицательных целых чисел A, B, C, D, E – количество бочек, вёдер, штофов, чарок и шкаликов, в сумме дающих ровно N шкаликов. При этом, значение E должно быть меньше 2 (так как 2 шкалика дают чарку), D и C должны быть меньше $$10$$ (так как $$10$$ чарок дают штоф, а $$10$$ штофов – ведро), значение $$B$$ должно быть меньше $$40$$ (так как $$40$$ вёдер дают бочку). Пример входных данных: $$8225$$ Пример выходных данных для приведённого выше примера входных данных: $$1$$ $$1$$ $$1$$ $$2$$ $$1$$ Требуется написать эффективную по времени и памяти программу. Перед текстом программы обязательно опишите алгоритм решения. Укажите используемый язык программирования и его версию. СРОЧНО НУЖЕН ОТВЕТ МАКСИМУМ ЧЕРЕЗ 3 ЧАСА, НА ЗНАЧКИ ДОЛЛАРА НЕ ОБРАЩАЙТЕ ВНИМАНИЯ

Ответы на вопрос

Ответ:
не знаю, вроде бы так, написал на с++, могу попробовать на питоне, хотя не особо его знаю
Объяснение:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
cout << n / 200 << " ";
n %= 200;
cout << n / 50 << " ";
n %= 50;
cout << n / 5 << " ";
n %= 5;
cout << n / 2 << " ";
n %= 2;
cout << n;
}



Для решения этой задачи можно использовать жадный алгоритм. Мы будем поочередно вычитать из N значения, соответствующие бочкам, вёдрам, штофам, чаркам и шкаликам, удовлетворяя условиям задачи. Начнем с самых крупных единиц измерения (бочек), и будем двигаться к менее крупным.
Вот алгоритм:
Инициализируем пять переменных: A, B, C, D, E, которые представляют количество бочек, вёдер, штофов, чарок и шкаликов соответственно. Их начальное значение равно нулю.
Вычитаем из N, пока N больше нуля, следующим образом:
- Если N >= 40, то увеличиваем A на 1 и вычитаем 40 из N.
- Если N >= 10, то увеличиваем B на 1 и вычитаем 10 из N.
- Если N >= 10, то увеличиваем C на 1 и вычитаем 10 из N.
- Если N >= 2, то увеличиваем D на 1 и вычитаем 2 из N.
- В остальных случаях (N < 2), увеличиваем E на N и обнуляем N.
Выводим A, B, C, D, и E через пробел.
Этот алгоритм обеспечивает минимальное количество бочек, вёдер, штофов, чарок и шкаликов для заданного объема N.
Вот пример кода на Python, реализующий этот алгоритм:
pythonN = int(input()) # Вводим N
A, B, C, D, E = 0, 0, 0, 0, 0
while N > 0:
if N >= 40:
A += 1
N -= 40
elif N >= 10:
B += 1
N -= 10
elif N >= 10:
C += 1
N -= 10
elif N >= 2:
D += 1
N -= 2
else:
E += N
N = 0
print(A, B, C, D, E)
Этот код решит задачу и вернет необходимые значения A, B, C, D и E.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili