[Java Advanced]Lab : Abstraction - 05. Pascals Triangle - грешка в авторовото решение за Judge
По условие тази задача трябва да работи с числа до 100:
Hints
• The Input number N will be in range [1…100]
• Think about a proper type for the elements of the array
Авторовото решение (вариант може да се види в презентацията към лекцията), използвано за генериране на очакваните резултати използва тип Long, но този тип прелива доста преди 100-ния ред и в резултат се получават отрицателни стойности за някои от елементите в редицата.
За удовлетворяване на условието (и входните данни използвани за последните 2 теста в Judge), трябва да се използва BigInteger.
Проблемът е, че вярното решение не минава в Judge заради грешно заложени очаквани резултати, т.е. за да получа 100 точки трябва да подам грешното решение.
Докладвал съм грешката по "каналния" ред, но реших да я споделя и тук, в случай, че и друг (внимаващ в детайлите) колега се сблъска с този проблем.
Update:
Добра новина!
Оправили са проблема с очакваните отговори за тази задача в Judge!
В момента само решение, което използва BigInteger взема 100/100.
С Long се вземат 60/100, а с int най-вероятно ще минат само нулевите тестове.
Използвай Long и би трябвало да получиш 100/100.
Лимит памет и грешка. Пак 60/100 :(
Излежда има някакъв проблем с алгоритъма, който използваш.
Ето едно "класическо" решение на задачата, което минава в Judge.
Видях какъв е проблема. Пуснах задачата със 100 реда и сравних числата. Longa се препълва и дава отрицателни стойности. Просто алгоритъма който ползвам заема към 20 МВ памет ако е с Long.
Здравей колега.
Понеже и аз се мъча като грешен дявол с тази задача реших да копирам твоето "класическо" решение и да го пусна в джъдж и резултатът е 60/100.
Не знам какво се случва с тази задача.
Добра новина!
Оправили са проблема с очакваните отговори за тази задача в Judge!
В момента само решение, което използва BigInteger взема 100/100.
С Long се вземат 60/100, а с int най-вероятно ще минат само нулевите тестове.
Може ли да качите решението с Big Integer
Аналогично е на решението с long, което съм качил по-горе - само трябва да се замени типа с BigInteger... И да се използват методите на този клас за аритметичните операции, но това е добра възможност да ги упражните. Най-добре опитайте сам да преработите задачата. Оставам на разположение, ако има проблем.
Абсолютно вярно.
Оправили са проблема с long /BigInteger.
Ето и едно решение от мен.
https://pastebin.com/aJ4W3VEG