Професионална програма
Loading...
+ Нов въпрос
onefen avatar onefen 27 Точки

Задача от Java изпит - лимит за време в Judge

Здравейте.

Упржнявам се за поправката по Java утре. Последния изпит който решавах е от 3 Септември 2014. На 3 задача: Problem 3 – Biggest 3 Prime Numbers. Ми даваше 70 точки в Judge като ми се дънеха 3 теста за време. След малко обработка единият мина и вече ми дава 80. Но все още ми се дънят два теста 7ми и 8ми за лимит за време. Някой по разбиращ може ли да ми погледне кода и да каже къде точно е проблема и какво го бави толкова

Ето го условието на задачата:

https://github.com/onefen/JavaExams/blob/master/Exam_3_September_2014/uslovia/03.%20Biggest%203%20Prime%20Numbers_%D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D0%B5.docx

 

А ето го и моят код:

https://github.com/onefen/JavaExams/blob/master/Exam_3_September_2014/src/problem03/Biggest3PrimeNumbers.java

 

Благодаря предварително.

0
Java Advanced
naskoni avatar naskoni 68 Точки

Здравей, колега :)

На пръв поглед причината е, че използваш три вложени цикъла, а в тях извикваш метод, който също има фор-цикъл. Въпросните тестове имат големи входящи данни и е нормално да увиснат. Предполагам, че си видял авторското решение? 

Друго което забелязвам, е че търсиш и проверяваш наред в масива. След като ти трябват най-големите прости числа, сортирай и търси отзад напред. ;)

 

0
25/10/2015 19:12:45
PsychoSphere avatar PsychoSphere 12 Точки

Ред 78:

i <= Math.sqrt(number)

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

0
onefen avatar onefen 27 Точки

Малко по-добре е така. Вече дава 90 точки. Като изнесох Math.sqrt(number) в отделна променлива преди for цикъла, за да не го смята всеки път вътре. Но все още един се дъни.

:)

 

0