Задача
С целью оптимизации компания решила соединить 4 филии в одну. Соответственно и объединить их счета в банке(У каждой филии свой счет). Банк может перевести все деньги с одного счета на другой и закрыть пустой счет. За такую операции банк берет процент от суммы объединенных счетов, который списывается с объединенного счета.
Вам положено рассчитать сколько денег будет на счету объединенной филии.
Внимание! От последовательности закрытия банковских счетов зависит размер процента, его нужно минимизировать.
Я написал код, (Таких задачи было 2, для задачи с 3-мя филиями такой способ работает) не могу понять что делаю не так, вроде процент не может быть меньше если соединять их
Суть кода : ввод кол-ва денег 4х филий, ввод процента.Сортировка по кол-ву денег. Выбор самого лучшего варианта(самая маленькая сумма). Вбрасываю самый лучший вариант в g[]
, сортирую еще раз, и применяю способ для 3х филий. Проходит только несколько тестов, что с кодом не так? Где и в чем ошибки?
P.S. Есть еще такой код, проходит больше тестов
#include <fstream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
int main() {
ifstream inp;
ofstream otp;
inp.open("input.txt");
otp.open("output.txt");
double ans = 0, p = 0;
vector<int> g(4);
inp >> g[0] >> g[1] >> g[2] >> g[3] >> p;
sort(g.begin(), g.end());
ans = (g[0] + g[1]) * (1 - (p / 100));
g[1] = ans;
g.erase(g.begin());
sort(g.begin(), g.end());
ans = (g[0] + g[1]) * (1 - (p / 100));
ans = (ans + g[2]) * (1 - (p / 100));
otp << fixed << setprecision(2) << ans;
return 0;
}
Нужно было поменять тип вектора, туда может попасть вещественное число. Устранил ошибку - работающий код :
#include <fstream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
int main() {
ifstream inp;
ofstream otp;
inp.open("input.txt");
otp.open("output.txt");
double ans = 0, p = 0;
vector<double> g(4);
inp >> g[0] >> g[1] >> g[2] >> g[3] >> p;
sort(g.begin(), g.end());
ans = (g[0] + g[1]) * (1 - (p / 100));
g[1] = ans;
g.erase(g.begin());
sort(g.begin(), g.end());
ans = (g[0] + g[1]) * (1 - (p / 100));
ans = (ans + g[2]) * (1 - (p / 100));
otp << fixed << setprecision(2) << ans;
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Написал код для подсчета суммы цифр в числе 100! для решения задачи на Проекте ЭйлераДо этого успешно использовал кусок кода, который непосредственно...
Задача из универа: Для числа типа float при выводе на экран его битового представления указать знаковый бит, порядок и мантиссуЧисло вводят...