Telerik Alpha - JS/C# Mock Exam (1 Oct)/(30 Sept): 2. Legs


1
Интересуват ме различни решения на ЗАДАЧАТА. C# или JS няма значение.

P.S.Възможно решение: C# версия



Отговори



2

Това е моето решение с вложени цикли (100т.)

https://paste.ofcode.org/WyBeLsBkwa4z8j6dDdNhCs


от Rhingo (10 точки)


2

Решение 100т. JavaScript:

https://paste.ofcode.org/37PumijCvykyPmcqZmwpQe2


от DSD_KA (55 точки)


3

https://pastebin.com/Vv8EV2nq

100/100 CSharp решение с вложени цикли и малко оптимизация.


от zaqwsx2 (100 точки)


1
Много чист код.

от Seanog (5 точки)

1
Здравейте, колега! Поздравления за решението, почти идентично е с моето. Имам само два въпроса:

1. Не е ли по-оптимално в първия цикъл да сложим 7-цата и да оставим проверката в if-a да е %2==0? Така ще имаме значително по-малко на брой итерации, тъй като стъпката е по-голяма.

2. Няма ли да е по-четимо и смислено от гледна точка проверките, които правим, ако вторият for e:
  1.  for (int y = x; y <= n; y += 5)
  2.             {
  3.                 if (- x) % 2 == 0) counter++;
  4.             }



от STzvetkov (1330 точки)


2

Ето моето решение също с вложени цикли! (CSharp)

https://pastebin.com/8QytSkfu




2

@STzvetkov

Здравейте,

По т.1 съм напълно съгласен: Ако най-външния цикъл е със стъпка 7 а модулното деление е на 2, то циклите намаляват 3,5 пъти.

Все още съм на ниво да се боря с не-много ясните условия на задачите и след това да мисля как точно да ги претворя в код (с програмиране се занимавам от 3 месеца...) и когато стигна 100/100 спирам да мисля за задачата. :)

Относно т.2 С такава корекция, отговорът е грешен.


от zaqwsx2 (100 точки)

1

Здравейте, 
Аз пиша код от "малко" по-дълго и ако приемете съвет, то когато се упражнявате старайте се да оптимизирате кода. После в реалната работо това ще Ви бъде от огромна полза. Но по време на изпит сте прав - освен ако не е по КПК, правите решение за 100т и минавате на следващата задача, защото време няма. Понякога дори може да го оставите и на 80, ако много се забатачвате. После след изпита време за разбор и оптимизация - бол. И все пак, имайте предвид, че на последващи изпити дават задачи, при които времето за изпълнение от машината е силно ограничено и се стига то timeouts при по-неоптимално решение.

Иначе втора точка да дава грешен резултат може би причината е, че в това, което съм пейстнал по-горе има една скоба в повече :-) Иначе ето решение за 100т, което имплементира тази идея:

static void Main() { int sum = 0; int n = int.Parse(Console.ReadLine()); for(int i = 0; i<=n; i+=7){ for(int j = i; j<=n; j+=5){ if((n-j)%2 == 0){ sum++; } } } Console.WriteLine(sum); }


от STzvetkov (1330 точки)