Crooked Stairs - JavaScript

Здравейте,
може ли някой да ми помогнe защо джъджа ми дава грешен отговор на последния кейс. 9 / 10
Локално всичко изглежда правилно.

Решение: https://pastebin.com/3ypF40N3
Задача: https://judge.telerikacademy.com/problem/03crookedstairs

1 Like

Здравей, Васил,

Ако ред 23 от решението се замени с

input.push(BigInt(gets()));

то решението ще мине и последния 12-и тест.

Проблемът се състои в това, че числата, които трябва да се пресметнат при последния тест, са, както изглежда, твърде големи. Типът Number в JavaScript представя 64-битови числа с плаваща запетая във формата IEEE-754. Освен дробни числа, в този формат могат да се представят без закръгляне и всички цели числа в интервала

[-253, 253].

Вън от този интервал могат да се представят точно само цели числа (между -21024+2971 и 21024-2971), които се делят на достатъчно голяма степен на 2. Например, от числата в интервала [253, 254] точно представими са само четните числа, от числата в интервала [254, 255] точно представими са само числата, които се делят на 4, и т.н. Всяко число, което не е точно представимо, се закръгля до едно от двете най-близки до него точно представими числа.

От друга страна, чрез стойности от тип BigInt могат да се представят - и да се извършват аритметични операции с - произволно големи цели числа (за сметка на по-голям разход на памет и по-дълго време за изпълненение на програмата).

Поздрави,
Иван

5 Likes

Благодаря! 10/10
Не се бях замислил изобщо, че проблема може да бъде решен с BigInt.

Поздрави,
Васил.