Возможно ли в kotlin при использовании pow получить Long?
Реализую алгоритм Карпа-Рабина на котлин. Написала функцию для вычисления хэша (код привожу ниже), и столкнулась с тем, что не могу получить Long при операции pow. Возможно ли это как-то сделать? Туплю немного, мб кто-то сталкивался. Заранее спасибо за все ответы!
val hash = d.toDouble().pow(patternLength - 1).toInt() % q // patternLength = 3, d = 40999999, q = 999999937
upd: немного поясню - при выполнении функции pow в котлин (без % даже) я получаю: 2147483647, та же функция в питон дает результат: 1680999918000001, который является верным
Ответы (1 шт):
Автор решения: lrdfthflies
→ Ссылка
Вы конвертируете результат в integer. Попробуйте использовать toLong()
import kotlin.math.*
fun main(args: Array<String>) {
val d = 40999999
val patternLength = 3
val q = 999999937
val hash = d.toDouble().pow(patternLength - 1).toLong()// % q
println(hash)
}
Возвращает 1680999918000001