if (up.length < down.length) { val tmp = up up = down down = tmp }
val res = newArray[Array[Int]](down.length)
for (i <- down.length - 1 to 0 by -1) { val arr = newArray[Int](up.length + down.length) for (j <- up.length - 1 to 0 by -1) { val tmp = down.charAt(i).toString.toInt * up.charAt(j).toString.toInt val divider = tmp / 10 val target = tmp % 10 arr(j + 1 + i) = arr(j + 1 + i) + target arr(j + i) = arr(j + i) + divider } res(i) = arr }
val finalArr = newArray[Int](up.length + down.length + 1) var divider = 0 for (i <- up.length + down.length - 1 to 0 by -1) { var t = divider for (j <- 0 until res.length) { t += res(j)(i) } divider = t / 10 finalArr(i + 1) = t % 10 }
var result = "" var find = false finalArr.foreach(a => { if (find) { result = result + a } else { if (a != 0) { find = true result = result + a } } }) result } }