Самый дорогой букет - C (СИ)
Формулировка задачи:
Я не могу решить задачу.
На День учителя Вася решил купить букет цветов. В магазине продаются ромашки по A рублей за штуку и гладиолусы по B рублей за штуку (A < B). У Васи есть C рублей. Он хочет составить букет из максимально возможного количества цветов, и при этом потратить как можно больше денег. Другими словами, из всех букетов с максимально возможным количеством цветов он хочет выбрать самый дорогой, но не дороже C рублей. Помогите ему вычислить стоимость такого букета.
Входные данные
Стандартный поток ввода содержит три целых числа A, B, C (1 ≤ A < B ≤ 100, 0 ≤ C ≤ 1000).
Выходные данные
Выведите в стандратный поток вывода одно число - стоимость самого дорогого букета из максимального количества цветов.
Решение задачи: «Самый дорогой букет»
textual
Листинг программы
#include <iostream> using namespace std; int main(){ int A, B, C, a[1001]={0}, i; cin>>A>>B>>C; if(C==0) { cout<<0; return 0; } a[0]=1; for(i=0; i<=C; i++) if(a[i]) { if(i+A<=C) a[i+A]=1; if(i+B<=C) a[i+B]=1; } for(i=C; i>0; i--) if(a[i]) break; cout<<i; return 0; }
Объяснение кода листинга программы
В этом коде:
- объявлены четыре переменные: A, B, C и a, причем a - это массив размером 1001;
- сначала вводятся значения переменных A, B и C с помощью функции cin;
- проверяется, равно ли значение переменной C нулю. Если это так, то выводится 0 и программа завершается;
- инициализируется первый элемент массива a значением 1;
- затем в цикле, который выполняется C раз, проверяется, есть ли в массиве a[i] значение 1. Если это так, то в цикле, который выполняется A раз, и в цикле, который выполняется B раз, присваивается значение 1 элементам массива a, находящимся на смещениях i+A и i+B;
- затем в цикле, который выполняется от C до 1, проверяется, есть ли в массиве a[i] значение 1. Если это так, то вычисляется i и выводится на экран;
- программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д