object Solution extends App{ import io.StdIn._ import scala.collection.mutable readLine val nums = readLine.trim.split(" +").map(_.toLong) println(longestSequence(nums)) def longestSequence(a: Array[Long]): Long = { val memo = mutable.HashMap[Long, Long](1L -> 1L) a.map(n => moves(n, memo)).sum } def moves(n: Long, memo: mutable.HashMap[Long, Long]): Long = { if(!memo.contains(n)) { var max = n var i = 2L while(i*i <= n) { if(n%i==0) { val tmp1 = i*moves(n/i, memo) if(tmp1 > max) max = tmp1 val tmp2 = (n/i)*moves(i, memo) if(tmp2 > max) max = tmp2 } i += 1 } memo(n) = max+1 } //println(n, memo) memo(n) } }