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