Софтуерно Инженерство
Loading...
MartinBG avatar MartinBG 1169 Точки

[Java Advanced]Lab : Abstraction - 05. Pascals Triangle - грешка в авторовото решение за Judge

Линк към 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 точки трябва да подам грешното решение. 

 

Докладвал съм грешката по "каналния" ред, но реших да я споделя и тук, в случай, че и друг (внимаващ в детайлите) колега се сблъска с този проблем. smiley

 

 

Update:

 

Добра новина!

Оправили са проблема с очакваните отговори за тази задача в Judge! smiley

В момента само решение, което използва BigInteger взема 100/100. 

С Long се вземат 60/100, а с int най-вероятно ще минат само нулевите тестове.

 

Тагове:
1
Java Advanced 23/09/2017 00:49:15
o_ignatov avatar o_ignatov 54 Точки

Аз опитах едно решение без масиви, а с директно печатане на числата по същия алгоритъм.

https://pastebin.com/63yR251s

С Integer ми минаха само нулевите тестове. Опитах с BigInteger и мина само още един. Краен резултат 60/100.

Не можах да свхана кое да напиша грешно, че да имам 100/100?

0
MartinBG avatar MartinBG 1169 Точки

Използвай Long и би трябвало да получиш 100/100.

0
o_ignatov avatar o_ignatov 54 Точки

Лимит памет и грешка. Пак 60/100 :(

0
MartinBG avatar MartinBG 1169 Точки

Излежда има някакъв проблем с алгоритъма, който използваш.

Ето едно "класическо" решение на задачата, което минава в Judge.

0
o_ignatov avatar o_ignatov 54 Точки

Видях какъв е проблема. Пуснах задачата със 100 реда и сравних числата. Longa се препълва и дава отрицателни стойности. Просто алгоритъма който ползвам заема към 20 МВ памет ако е с Long.

0
Jovtcho avatar Jovtcho 20 Точки

Здравей колега.

Понеже и аз се мъча като грешен дявол с тази задача реших да копирам твоето  "класическо" решение и да го пусна в джъдж и резултатът е 60/100. 

Не знам какво се случва с тази задача.

 

0
MartinBG avatar MartinBG 1169 Точки

Добра новина!

Оправили са проблема с очакваните отговори за тази задача в Judge! smiley

В момента само решение, което използва BigInteger взема 100/100. 

С Long се вземат 60/100, а с int най-вероятно ще минат само нулевите тестове.

0
valkata1220 avatar valkata1220 20 Точки

Може ли да качите решението с Big Integer

0
MartinBG avatar MartinBG 1169 Точки

Аналогично е на решението с long, което съм качил по-горе - само трябва да се замени типа с BigInteger... И да се използват методите на този клас за аритметичните операции, но това е добра възможност да ги упражните. Най-добре опитайте сам да преработите задачата. Оставам на разположение, ако има проблем. 

0
Jovtcho avatar Jovtcho 20 Точки

Абсолютно вярно.

Оправили са проблема с long /BigInteger. 

Ето и едно решение от мен.

https://pastebin.com/aJ4W3VEG

 

 

0