Загрузка...

Write a C++ program for grade 9 because I don't understand...

Thread in C/C++ created by Ic3Cr34M Sep 19, 2017. (bumped Sep 19, 2017) 1136 views

  1. Ic3Cr34M
    Ic3Cr34M Topic starter Sep 19, 2017 Banned 510 May 6, 2017
    Нет лучшего способа произвести впечатление на девушку, чем великодушный отказ брать сдачу при оплате счёта в кафе. По крайней мере, Макс считает именно так. Для закрепления эффекта Макс также не берёт сдачу при оплате такси.

    У Макса имеется A купюр по 10 рублей, B купюр по 50 рублей и C купюр по 100 рублей. В кафе Максу и его девушке принесли счёт на сумму N рублей, а проезд в такси стоит M рублей.

    Помогите Максу узнать, какую наименьшую сумму денег ему придётся потратить, если он будет отказываться от сдачи. Помните, что кафе и такси оплачиваются по отдельности.





    Входные данные


    Первая строка содержит целые числа A, B, C (0 ≤ A, B, C ≤ 10) — количество имеющихся у Макса купюр по 10, 50 и 100 рублей соответственно.

    Вторая строка содержит целые числа N и M (1 ≤ N, M ≤ 600) — сумму в счёте кафе и цену такси соответственно.





    Выходные данные


    Выведите одно целое число — минимальное количество рублей, которое потребуется потратить Максу.

    Если Макс не сможет расплатиться предпочитаемым образом, выведите число -1.





    Примеры




    входные данные
    3 1 10
    490 100
    выходные данные
    600

    входные данные
    1 6 2
    485 351
    выходные данные
    -1




    Примечание


    В первом примере Макс может заплатить 500 рублей за кафе и 100 рублей за такси.
     
  2. Ic3Cr34M
    Ic3Cr34M Topic starter Sep 19, 2017 Banned 510 May 6, 2017
    Да, чтобы в консоле вывобилось и ввоодилось все, ну ты понял
     
  3. justman_inactive
    Ну тип такого

    Code

    int a, b, c;
    cin >> a >> b >> c;
    int m, n;
    cin >> m >> n;

    // Вовсе не жадный Максим будет действовать по весьма жадному алгоритму
    // Ведём ту самую в кафе
    int a1 = a, b1 = b, c1 = c; // Оплата Кафе
    int sum1 = a1 * 10 + b1 * 50 + c1 * 100; // Сколько всего платить (Сейчас - весь его скарб)
    while (sum1 >= m + 100 && c1 > 0) {
    c1--; // Спасаем 100
    sum1 = a1 * 10 + b1 * 50 + c1 * 100;
    }
    while (sum1 >= m + 50 && b1 > 0) {
    b1--; // Спасаем 50
    sum1 = a1 * 10 + b1 * 50 + c1 * 100;
    }
    while (sum1 >= m + 10 && a1 > 0) {
    a1--; // Спасаем 10
    sum1 = a1 * 10 + b1 * 50 + c1 * 100;
    }
    if (sum1 < m) {
    cout << -1; // Максим облажался :(
    return 0;
    }

    // Ведём ту самую в такси
    int a2 = a - a1, b2 = b - b1, c2 = c - c1; // Оплата Кафе
    int sum2 = a2 * 10 + b2 * 50 + c2 * 100; // Сколько всего платить (Сейчас - всё, что осталось)
    while (sum2 >= n + 100 && c2 > 0) {
    c2--; // Спасаем 100
    sum2 = a2 * 10 + b2 * 50 + c2 * 100;
    }
    while (sum2 >= n + 50 && b2 > 0) {
    b2--; // Спасаем 50
    sum2 = a2 * 10 + b2 * 50 + c2 * 100;
    }
    while (sum2 >= n + 10 && a2 > 0) {
    a2--; // Спасаем 10
    sum2 = a2 * 10 + b2 * 50 + c2 * 100;
    }
    if (sum2 < n) {
    cout << -1; // Максим облажался :(
    return 0;
    }
    cout << sum1 + sum2;

    return 0;
     
  4. justman_inactive
     
  5. keoRez
    Code

    int main() {
    int Note10(0), Note50(0), Note100(0),
    MoneyCoffe(0), MoneyTaxi(0);
    std::cin >> Note10 >> Note50 >> Note100;
    std::cin >> MoneyCoffe >> MoneyTaxi;

    int AllMoney = MoneyCoffe + MoneyTaxi;
    if(AllMoney > (Note10 * 10 + Note50 * 50 + Note100 * 100)) {
    std::cout << "-1\n";
    system("pause");
    return 0;
    }
    int HowNotes100 = Note100, HowNotes50 = Note50, HowNotes10 = Note10;

    int Note100Cof = (HowNotes100 != 0 ? MoneyCoffe > 0 ?
    (Note100 > MoneyCoffe / 100 ?
    (MoneyCoffe % 100 < 100 ? Note100 = MoneyCoffe / 100 + 1 : Note100 = MoneyCoffe / 100)
    : Note100 = Note100, MoneyCoffe -= Note100 * 100, Note100)
    : 0 : 0),

    Note50Cof = (HowNotes50 != 0 ? MoneyCoffe > 0 ?
    (Note50 > MoneyCoffe / 50 ?
    (MoneyCoffe % 50 < 50 ? Note50 = MoneyCoffe / 50 + 1 : Note50 = MoneyCoffe / 50)
    : Note50 = Note50, MoneyCoffe -= Note50 * 50, Note50)
    : 0 : 0),

    Note10Cof = (HowNotes10 != 0 ? MoneyCoffe > 0 ?
    (Note10 > MoneyCoffe / 10 ?
    (MoneyCoffe % 10 < 10 ? Note10 = MoneyCoffe / 10 + 1 : Note10 = MoneyCoffe / 10)
    : Note10 = Note10, MoneyCoffe -= Note10 * 10, Note10)
    : 0 : 0);

    HowNotes100 -= Note100, HowNotes50 -= Note50, HowNotes10 -= Note10;

    int Note100Tax =
    (HowNotes100 != 0 ? MoneyTaxi > 0 ?
    (HowNotes100 > MoneyTaxi / 100 ?
    (MoneyTaxi % 100 < 100 && MoneyTaxi % 100 != 0 ? Note100 = MoneyTaxi / 100 + 1 :
    Note100 = MoneyTaxi / 100) : Note100 = Note100, MoneyTaxi -= Note100 * 100, Note100)
    : 0 : 0),

    Note50Tax =
    (HowNotes50 != 0 ? MoneyTaxi > 0 ?
    (HowNotes50 > MoneyTaxi / 50 ?
    (MoneyTaxi % 50 < 50 && MoneyTaxi % 50 != 0 ? Note50 = MoneyTaxi / 50 + 1
    : Note50 = MoneyTaxi / 50) : Note50 = Note50, MoneyTaxi -= Note50 * 50, Note50)
    : 0 : 0),

    Note10Tax =
    (HowNotes10 != 0 ? MoneyTaxi > 0 ?
    (HowNotes10 > MoneyTaxi / 10 ?
    (MoneyTaxi % 10 < 10 && MoneyTaxi % 10 != 0 ? Note10 = MoneyTaxi / 10 + 1
    : Note10 = MoneyTaxi / 10) : Note10 = Note10, MoneyTaxi -= Note10 * 10, Note10)
    : 0 : 0);

    int ResultMoney = (Note100Cof * 100) + (Note100Tax * 100) + (Note10Cof * 50) +
    (Note50Tax * 50) + (Note10Tax * 10) + (Note10Cof * 10);

    std::cout << "ResultMoney: " << ResultMoney << '\n';
    system("pause");
    }
    Поздно, конечно, но очень не обычно сдела. Без циклов и рекурсий.
     
  6. keoRez
    *необычно , *сделал
     
Loading...
Top