Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
15
Task/Modular-inverse/Scala/modular-inverse-1.scala
Normal file
15
Task/Modular-inverse/Scala/modular-inverse-1.scala
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
def gcdExt(u: Int, v: Int): (Int, Int, Int) = {
|
||||
@tailrec
|
||||
def aux(a: Int, b: Int, x: Int, y: Int, x1: Int, x2: Int, y1: Int, y2: Int): (Int, Int, Int) = {
|
||||
if(b == 0) (x, y, a) else {
|
||||
val (q, r) = (a / b, a % b)
|
||||
aux(b, r, x2 - q * x1, y2 - q * y1, x, x1, y, y1)
|
||||
}
|
||||
}
|
||||
aux(u, v, 1, 0, 0, 1, 1, 0)
|
||||
}
|
||||
|
||||
def modInv(a: Int, m: Int): Option[Int] = {
|
||||
val (i, j, g) = gcdExt(a, m)
|
||||
if (g == 1) Option(if (i < 0) i + m else i) else Option.empty
|
||||
}
|
||||
1
Task/Modular-inverse/Scala/modular-inverse-2.scala
Normal file
1
Task/Modular-inverse/Scala/modular-inverse-2.scala
Normal file
|
|
@ -0,0 +1 @@
|
|||
def modInv(a: Int, m: Int, x:Int = 1, y:Int = 0) : Int = if (m == 0) x else modInv(m, a%m, y, x - y*(a/m))
|
||||
Loading…
Add table
Add a link
Reference in a new issue