Требуется купить на заданную сумму фрукты, если на рынке установлены следующие цены: один арбуз - А руб., одно яблоко - В р., один персик – Р р. Определить такие варианты покупок, чтобы деньги были истрачены полностью, а количество предметов было наибольшим. Нужно решить эту задачу математическим путем
Ответы
#include <iostream>
void findBestPurchaseOptions(int budget, int priceWatermelon, int priceApple, int pricePeach) {
int maxWatermelonCount = budget / priceWatermelon;
for (int watermelonCount = 0; watermelonCount <= maxWatermelonCount; ++watermelonCount) {
int remainingBudgetAfterWatermelon = budget - watermelonCount * priceWatermelon;
int maxAppleCount = remainingBudgetAfterWatermelon / priceApple;
for (int appleCount = 0; appleCount <= maxAppleCount; ++appleCount) {
int remainingBudgetAfterApple = remainingBudgetAfterWatermelon - appleCount * priceApple;
int peachCount = remainingBudgetAfterApple / pricePeach;
int totalFruits = watermelonCount + appleCount + peachCount;
int totalSpent = watermelonCount * priceWatermelon + appleCount * priceApple + peachCount * pricePeach;
if (totalSpent == budget && totalFruits > 0) {
std::cout << "Количество арбузов: " << watermelonCount << ", Количество яблок: " << appleCount
<< ", Количество персиков: " << peachCount << std::endl;
}
}
}
}
int main() {
int budget, priceWatermelon, priceApple, pricePeach;
std::cout << "Введите бюджет: ";
std::cin >> budget;
std::cout << "Введите цену арбуза: ";
std::cin >> priceWatermelon;
std::cout << "Введите цену яблока: ";
std::cin >> priceApple;
std::cout << "Введите цену персика: ";
std::cin >> pricePeach;
findBestPurchaseOptions(budget, priceWatermelon, priceApple, pricePeach);
return 0;
}