C/C++

Задача на поездки в метро в C++

Билет на одну поездку в метро стоит 15 рублей, билет на 10 поездок стоит 125 рублей, билет на 60 поездок стоит 440 рублей. Пассажир планирует совершить n поездок. Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов – минимальна.
Дано одно число n - количество поездок. Выведите три целых числа, равные необходимому количеству билетов на 1, на 10, на 60 поездок.
НО! Загвоздка в том, что код должен подходить под любые числа, например: есть 100 поездок, на 1 поездку цена в 10, на 10 цена 80, на 60 цена 500. Ответ на эти данные: 0 10 0. На скрине код, но он считает неправильно
Вот вам на все случаи жизни!

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct Tariff {
unsigned quantity;
double cost;
unsigned tickets;
Tariff(unsigned quantity, double cost)
: quantity(quantity), cost(cost), tickets(0) {}
double single()const {
return cost / quantity;
}
friend bool operator<(const Tariff& a, const Tariff& b) {
return a.single() < b.single();
}
};
class Plan {
public:
Plan(unsigned trip) : trip(trip) {}
void add(const Tariff& tariff) {
tariffs.push_back(tariff);
}
void add(Tariff&& tariff) {
tariffs.emplace_back(tariff);
}
void optimally() {
sort(tariffs.begin(), tariffs.end());
auto tmp = trip;
for (auto& tariff : tariffs) {
while (tmp >= tariff.quantity) {
tmp -= tariff.quantity;
++tariff.tickets;
}
}
auto comp = [](const Tariff& a, const Tariff& b) {
return a.quantity < b.quantity;
};
sort(tariffs.begin(), tariffs.end(), comp);
cout << "Оптимальный план: ";
for (const auto& tariff : tariffs) cout << tariff.tickets << ' ';
puts("");
}
private:
unsigned trip;
vector<Tariff> tariffs;
};
Tariff create(const char* msg, unsigned quantity) {
cout << msg;
double cost;
cin >> cost;
Tariff tariff(quantity, cost);
return tariff;
}
int main() {
system("chcp 1251 > nul");
cout << "Введите количество поездок: ";
unsigned trip;
cin >> trip;
Plan plan(trip);
plan.add(create("Цена одной поездки: ", 1));
plan.add(create("Цена десяти поездок: ", 10));
plan.add(create("Цена шестидесяти поездок: ", 60));
plan.optimally();
system("pause > nul");
}
VB
Vasya Birkov
93 106
Лучший ответ
Emrullah Kadem
 На java script

const prompt = require('prompt-sync')()

let x1 = 15
let x10 = 125
let x60 = 440

let n = +prompt('sayohatlar soni = ')

let A = Math.floor(n/60)
let B = Math.floor((n - A*60)/10)
let C = n - A*60 - B*10

if (x60 < B*x10 + C*x1) {
A++
B = 0
C = 0
console.log(C, B, A);
return 0;
}
if (x60 > B*x10 + C*x1) {
console.log(C, B, A);
return 0;
}
else if (A = 0 && x10 > C * x1) {
B++
C = 0
console.log(C, B, A);
return 0;
}
else if ((A = 0) && (B = 0) ) {
console.log(C, B, A);
}
Что за бред написан? Первый if . Если стоимость билета на одну поездку *6 меньше количество билетов на 60 поездок ???Что? Сравниваете стоимость и количество .