Оператор % работи странно в Javascript

preparation

#1

Здравейте.
Имам проблем със странното поведение на оператора процент в Javascript.
Когато му подам малки числа работи коректно, например:
print(5 % 2); // output: 1
Ако използвам големи числа, например: print(18446744073709551615 % 256); // otuput: 0
0 е грешен резултат, трябва да върне 255.
Пробвах в този сайт - https://www.omnicalculator.com/math/remainder
А също пробвах и на C# и той върна 255.
Пробвах да взема числото с bigInt, let number = bigInt(18446744073709551615); и после да му направя процент 256, но пак връща 0 като резултат.
Някакви идеи ?


#2

Реших си проблема.
Трябвало е да пиша BigInt(), а не bigInt() .


#4

BigInt() на Javascript работи ли в judge ?
Когато напиша на първия ред в програмата let number = BigInt(gets()); и не минава, нито един кейс в judge, а връща Invalid return. Ако е без BigInt работи в judge, но не минават всички тестове, защото 64 битовия floating point тип се препълва.
Защо judge не работи с BigInt() ?
Къде бъркам ?


#5

Здравей,

BigInt се поддържа от Node.js 10, а за момента системата не е с тази версия. Планираме да я сменим, но няма да е преди изпита.
Разгледай тази библиотека https://github.com/peterolson/BigInteger.js
Копирай ето този код и го сложи най-отгоре във файла ти. Няма да е красиво но е някакъв workaround за момента.


#6

Благодаря много за помощта!
Аз точно затова се обърках, защото първо намерих bigInt(), пък после BigInt() и на всичкото отгоре локално bigInt-a се държи като BigInt(), но в judge не е така. Затова може би е добре да решавам задачите със същата версия на node като на judge.