Отображение двух целых чисел в одно целое в Python 3

1

Я хотел бы отобразить два целых числа в один для хэш- функции в классе. Эти целые числа варьируются от 0 до 12856320000000. Я слышал, что я могу использовать следующую функцию спаривания Cantour, чтобы сделать это

Изображение 174551

Однако мой sys.maxsize

9223372036854775807

В результате, когда k1 и k2 являются большими в следующем примере, ответ не будет целым

k1 = 6887309306
k2 = 6887309307
pi(k1,k2)=9.487005898057764e+19

Есть ли способ решить эту проблему? Спасибо

  • 0
    использовать long целые?
Теги:
python-3.x
hash
mapping

1 ответ

3
Лучший ответ

Ваша проблема вызвана не числом, а тем, что вы делите на 2. Подраздел в Python 3.x всегда производит число с плавающей запятой. Вы должны использовать целочисленное деление:

(k1 + k2) * (k1 + k2 + 1) // 2 + k2
#94870058980577640498

Ещё вопросы

Сообщество Overcoder
Наверх
Меню