Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

kolioi avatar kolioi 641 Точки
Best Answer

Ето ти решение на 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

 

0
filip4o avatar filip4o 4 Точки

Благодаря за отговора, не бих се сетил така да го напиша, но не разбирам логиката зад втория (int)  в уравнението?

int x = (int)((V1 + V2) * 100.0 / V),

0
kolioi avatar kolioi 641 Точки

С израза (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

0
filip4o avatar filip4o 4 Точки

Разбрах къде греша, благодаря за насоките.

0
Lyubohd avatar Lyubohd 137 Точки

Здравей Филип,

Доколкото знам конкретно с тази задача достигането на 100/100 на език различен от C# е изключително трудно.

Решението ми на Java също дава 76/100, и в същото време същата логика разписана на C# ми донесе 100 от 100. Така че може да се каже че си достигнал максимума за тази задача на C++.

Поздрави,

Любо

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.