БлогNot. Задача алкоголика :)

Задача алкоголика :)

Вот, именно 5 бутылок лимонада по 27 копеек и можно было купить в СССР на рубль. И 25 копеек сдачи оставалось. Потому что выпив первые три бутылки, можно было сдать их по 12 копеек и купить на 19+24=55 копеек ещё две, которые тоже потом сдаются :)

Проще всего подобную задачу решить с помощью рекурсии:

#include <iostream>
using namespace std;

int count(int money,int price,int refund) {
    if (money<price) return 0;
    int cnt = money / price;
    //cout << endl << cnt << ", " << money-cnt*price
    //<< ", " << cnt*refund << ", " << money-cnt*price+cnt*refund;
    return cnt + count(money-cnt*price+cnt*refund,price,refund);
}

int main() {
    int money = 100; //сумма, коп.
    int price = 27; //стоимость за единицу, коп.
    int refund = 12; //стоимость возврата с покупки, коп.
    //cout << endl << "Количество, сдача, возврат, сдача+возврат";
    cout << endl << "N=" << count (money,price,refund);
    cin.get();
    return 0;
}

Ну и ещё можно много разных модификаций такой постановки придумать - раз, два, и т.п. Но некогда, это так, на разговор отвлёкся :)

02.04.2018, 18:10 [1893 просмотра]


теги: c++ алгоритм математика

К этой статье пока нет комментариев, Ваш будет первым