Loading...
v1ppers0nn avatar v1ppers0nn 234 Точки

[Exam Problems] Java Basics - Грешка на задача Timespan

Здравейте,

днес намерихме с колеги грешка в първата задача от изпита сутринта. Даден е инпут до 1 милион, а десетата проверка е 8 милиона, за това някой може да са имали 90 точки.

Казах на екипа на СофтУни и казаха, че това е тяхна грешка и ще се оправят точките на всички.

Тагове:
3
Java Advanced 26/09/2014 23:50:01
Petya avatar Petya 2461 Точки

Задачата е оправена и всички тестове са рекалкулирани.

1
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

И на мен ми направи впечатление това преди малко. Мен ми е интересно защо обаче в Java Date е толкова бъгав... в повечето случаи връща верен резултат при изчисляване на разликата между 2 реда с часове, но има случаи в които връща с 1 час по-голяма разлика.

Edit: последния тест макар и да е бил 8 млн. пак не е оказало ефект, защото по условие в задачата часовете може да са до 1млн * 3600 = 3 600 000 000 , което пак препълва int и е нужно да се използва long. Сега от SoftUni са променили в judge последния тест, но 9-тия тест е с 1млн. и си гърми с int. Така че не мисля, че последния тест е оказал някакво влияние.

0
24/09/2014 17:17:15
tdsamardzhiev avatar tdsamardzhiev 77 Точки

Малко е странно, но всъщност на Java 8 май би трябвало да си работи и с int, понеже int-а побира всички стойности за 32bit signed И 32bit unsigned. На изпита го установих laughing

За това че класът Date е някъв ужас съм напълно съгласен - само като го видях ми стана ясно, че ще е по-лесно без него да мина.

 

EDIT:

Моя грешка, int-a може да се ползва като signed ИЛИ unsigned (чрез методите за unsigned аритметика).

0
25/09/2014 10:52:30
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Не, int в Java не побира всички свойности на 32bit signed int и 32bit unsigned int.  

Min стойността на int в Java e: -2 147 483 648

Max стойността на int в Java е:  2 147 483 647

При първия ми събмит на задачата на изпита 9-ти и 10-ти тест гърмяха именно задади int-a. С long нямаше проблем.

1
25/09/2014 10:28:36
tdsamardzhiev avatar tdsamardzhiev 77 Точки

Да, прав си, едитнах горния коментар да не подвеждам хората. Реално чрез методите за unsigned аритметика може да ползваме int като unsigned или да го принтим с toUnsignedString(), но не можем свободно да си мешаме signed/unsigned. 

Отделно, определено с long е по-чисто да се направи, щом достигаме стойности от порядъка на максимума.

 

0
25/09/2014 10:53:06
g_popov avatar g_popov 15 Точки

Аз имах 90 точки от задачата на самия изпит, а сега като вляза в judge-а ми вади 0. Защо може се е получило така?

0
Filkolev avatar Filkolev 4482 Точки

На първо време, виж си кода и детайлите в Judge, най-вече нулевите тестове. Там трябва да има инфо, което да ти подскаже какво може да е станало. При проблем с тестовете идеята е да се дадат точки на ощетените, не да се отнемат такива на останалите, така че няма да останеш с 0 гарантирано. Пиши все пак на екипа на СофтУни, не знам кога ще се смятат оценките, но това е важно инфо да имат предвид, да не вземат тази 0 за задачата, която сега стои в системата.

0
Petya avatar Petya 2461 Точки

Здравей, вече имаш 100 т. Ретестнахме ти решението.

0
cvetant avatar cvetant 75 Точки

Явно всички са превръщали часовете и минутите в секунди, за да не ви стигне int.

Ето моето решение, което изкарва 100 точки с int. http://pastebin.com/FzXXfXFr

 

 

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