import java.lang.Long.sum fun main(arr:Array) { val (dice, ikasama) = (1..2).map { readLine()!!.toInt() } val taroPatttern = getIkasamaAns(dice, ikasama) val jiroPattern = getAns(dice) var winCount = 0.toLong() var loseCount = 0.toLong() var drawCount = 0.toLong() for(i in taroPatttern.keys) { winCount += taroPatttern[i]!! * jiroPattern.filter { it.key < i }.map { it.value }.sum() drawCount += taroPatttern[i]!! * jiroPattern.filter { it.key == i }.map { it.value }.sum() loseCount += taroPatttern[i]!! * jiroPattern.filter { it.key >i }.map { it.value }.sum() } var ans = winCount.toDouble() / (winCount + loseCount + drawCount) println(ans) } val ikasamaDic = mutableMapOf>() fun getAns(remain:Int):MutableMap { if(remain == 1) { return (1..6).map { Pair(it, 1.toLong()) }.toMap().toMutableMap() } val ans = mutableMapOf() val ret = getAns(remain - 1) for(i in (1..6)) { for (j in ret.keys) { ans[i+j]?.also { ans[i+j] = it + ret[j]!! }?: run { ans[i+j] = ret[j]!! } } } return ans } fun getIkasamaAns(remain:Int, ikasamaRemain:Int):MutableMap { if(ikasamaRemain <= 0) { return getAns(remain) } if(remain == 1) { return (4..6).map { Pair(it, 2.toLong()) }.toMap().toMutableMap() } val ans = mutableMapOf() val ret = getIkasamaAns(remain - 1, ikasamaRemain - 1) for(i in (1..6)) { for (j in ret.keys) { val key = (((i-1)%3) + 4) + j ans[key]?.also { ans[key] = it + ret[j]!! }?: run { ans[key] = ret[j]!! } } } return ans }