Задача 4. Renovation Programming Basics Online Exam - 6 and 7 July 2019
В judge това решение ми дава 75 точки: https://pastebin.com/j2RnqmW0. Не си разбирам грешката, някой ако може да ми обясни.
Това е условието:
Задача 4. Ремонт
Пешо решава, че иска да направи ремонт вкъщи. Неговата задача е да боядиса стените в хола, като знаете височината и ширината на една стена. Холът на Пешо има 4 стени с еднакви размери, определен процент от които се заемат от прозорци и врати, които няма да бъдат боядисвани. Той не е сигурен дали ще успее наведнъж, затова моли Вас да му помогнете да изчисли дали ще му остава още работа за следващия ден и, ако да, колко кв. м. има да довърши, а в случай, че успее да боядиса хола, колко боя му е останала (трябва да се има предвид, че с един литър боя се боядисва един квадратен метър от стената).
Вход
От конзолата се четат следните редове:
- Височина на стената - цяло число [0… 100]
- Ширина на стената - цяло число [0… 100]
- Процент от общата площ на стените, който няма да бъде боядисан - цяло число [5… 95]
На следващите редове до получаване на командата "Tired!" или докато не бъдат боядисани всички стени, се чете по едно число:
- Литри боя – цяло число [0…100]:
Забележка: Площта за боядисване да бъде закръглена нагоре до най-близкото цяло число.
Изход
Да се отпечата на конзолата един от следните редове:
- При получаване на командата "Tired!":
- quadratic m left."
{квадратни метри} е повърхнината, която му остава да боядисана. - Aко е останала боя в излишък:
- All walls are painted and you have {литри боя} l
paint left!"
- Ако след боядисването на всички стени не е останала боя:
- All walls are painted! Great job, Pesho!"
За да не се чудиш, защо се получава така, може да прочетеш как се представят числата в JS (double-precision 64-bit binary format IEEE 754 ), което btw се полва и в почти всички други езици (C#, Java, ...).
Пробвай в конзолата:
console.log(1 - 70/100) (не е точно 0.3)
console.log(1 - 85/100) (не е точно 0.15)
console.log(1 - 90/100) (не е точно 0.1)
...
и от проблема със закръглянето става белята, затова с floating point numbers се работи много внимателно.
Много благодаря