Loading...
dimgog avatar dimgog 2 Точки

Надвишено "Лимит време" за обработка на програмка за изчисляване на факториел

Две програмки:

Първата http://pastebin.com/veeA4XYR

И ВТОРАТА http://pastebin.com/fBs03Qdp

Разликата е само в условието за напускане на цикъла (но и двете работят). Първата има време 0.015 s, а втората има време от 0.156 s и надвишава "Лимит времето" от 0.1 s при първия от седемте теста и дава оценка 85/100 вместо 100/100.

Въпросът е: Каква е причината за това забавяне?

0
Programming Basics 08/01/2017 13:54:43
ThePSXHive avatar ThePSXHive 436 Точки

Първият тест явно е единица (за входните данни), а забавянето се дължи на безкрайното "зацикляне" в условието на втория цикъл; понеже do-while конструкцията се изпълнява поне един път, стойността се декрементира до 0, и изпълнението на този блок никога не завършва, защото на n никога не се присвоява стойност единица. За сметка на това, първата версия не изчислява правилно стойността на факториел от 0, която не е 0, а единица. Но все пак, не знам какво е условието, и е възможно нулата да не в интервалът с позволени стойности.

0
07/01/2017 16:44:21
AlucardDracula avatar AlucardDracula 416 Точки
int a = int.Parse(Console.ReadLine());
int b = 1;
for (int i = 1; i <= a; i++)
{
   b = b * i;
   Console.WriteLine(b);
}

отнася се за тая затача ТУК.

според мен грешката ти е в while (n !=1); т.е ако n == 0 ще работи до безкрайност щото int приема и отрицателни числа и когато се препълни започва отново.. и отново 

бележка: пробвай да стартираш кода си с input 0 ще видиш че има грешка

0
07/01/2017 20:35:38
Shirdor avatar Shirdor 131 Точки

overtime се получава в много от случаите на безкраен цикъл, провери дали няма такъв случай

 

0
Sim0o0na avatar Sim0o0na Trainer 567 Точки

Използвай pastebin другия път, за да не става поста ти ненужно дълъг :)

0
davichonov365 avatar davichonov365 127 Точки

Според мен последния тест ти препълва и ти дава Exception

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