[Programming Basics] [C++] Тръби в басейн.
Кода дава в Judge 76/100. https://pastebin.com/kJdq0Dii
От два дни се опитвам да намеря решение, но без резултат, някой който има повече опит може ли да даде идея ?
Кода дава в Judge 76/100. https://pastebin.com/kJdq0Dii
От два дни се опитвам да намеря решение, но без резултат, някой който има повече опит може ли да даде идея ?
Ето ти решение на C# https://pastebin.com/8cUDpDTq
и решение на C++ https://pastebin.com/1UGbw62B
И двете дават 100/100 точки в Джадж. Уловката тук е (и това не е споменато в условието!) когато има препълване, да отпечаташ с колко литра е прелял басейна само с една цифра след десетичната точка.
Също така, обърнете внимание на времето за изпълнение и големината на използваната памет от двете програмки:
C# Memory: 7.73 MB Time: 0.013 s
C++ Memory: 1.87 MB Time: 0.003 s
Здравей Филип,
Доколкото знам конкретно с тази задача достигането на 100/100 на език различен от C# е изключително трудно.
Решението ми на Java също дава 76/100, и в същото време същата логика разписана на C# ми донесе 100 от 100. Така че може да се каже че си достигнал максимума за тази задача на C++.
Поздрави,
Любо
Благодаря за отговора, не бих се сетил така да го напиша, но не разбирам логиката зад втория (int) в уравнението?
int x = (int)((V1 + V2) * 100.0 / V),
С израза (V1 + V2) / V изчисляваме каква част от басейна е напълнена и след това го умножаваме по 100 за да получим проценти. Тъй като резултата е реално число (double или float) с (int) го тайпкастваме (typecast/преобразуваме) към цяло число, иначе компилатора дава предупреждение (warning).
За cout.precision() виж примера в MSDN - двата случая когато се употребва (с и без fixed), какво връща и каква стойност има по подразбиране.
https://msdn.microsoft.com/library/0f9e0abc-f70f-49bc-aa1f-003859f56cfe.aspx#ios_base__precision
Разбрах къде греша, благодаря за насоките.