Loading...
JOHNY avatar JOHNY 196 Точки

Do/While || For- разлики във времето за компилиране в judge, Lesson 11 - Loops, Problem 10 - Odd/Even Sum

Здравейте,

Споделям челен опит (като от челен удар) при използване на for при решението на тази задача.


Ето и малко подробности:


ЛИНК към условията на зададачите (взимамеза пример задача 10 - Odd Even Sum);

ЛИНК към решението на задачата с използване на цикъл чрез for;

ЛИНК към решението на задачата с използване на цикъл чрез do/while.

 

Факт е, че кодът в къдравите скоби(между { и } ), който се изпълнява n пъти  е абсолютно еднакъв.

Факт е, че реално броят операции и в двата случая е еднакъв.

Най-интересният факт  обаче е, че judge дава 100 точки при използване на do/while и цели 12 точки при използване на for. За един и същ код, за едни и същи операции и за еднакви крайни резултати.

"Гърми" заради прекалено много време за компилиране - 0.015 s на тест при do/while и 0.315 s при for или цели 21 пъти по-бавно.

Потърсих отговор при чичко Google за разлики между двата варианта за създаване на цикъл, но отговорите не са категорични и еднозначни.

Единият от тях е, че при еднакъв код, този с по-малко на брой символие по-бърз. Очевадно е невярно твърдение, защото в нашия случай при по-бързия (do/while) имаме 676 символа, а при по-бавния (for) - 604.

Друга теория е, че зависи изцяло от компилатора. Възможно е и да е така, но няма как да бъда сигурен при положение, че във всички останали случаи не съм имялникакви проблеми с for в judge.

Ще помоля за съдействие за да открием моята грешка (ако има такава) или причината това да се случва.

Иначе е много кофти усещането да видиш 12 точки при "правилно решение", което си изградилв главата си и да почнеш да търсиш грешката навсякъде. 

Благодаря.

 

Тагове:
0
Programming Basics with C++ 02/02/2020 23:19:42
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.