25 lines
765 B
Kotlin
25 lines
765 B
Kotlin
// version 1.1.2
|
|
|
|
val data = intArrayOf(
|
|
85, 88, 75, 66, 25, 29, 83, 39, 97,
|
|
68, 41, 10, 49, 16, 65, 32, 92, 28, 98
|
|
)
|
|
|
|
fun pick(at: Int, remain: Int, accu: Int, treat: Int): Int {
|
|
if (remain == 0) return if (accu > treat) 1 else 0
|
|
return pick(at - 1, remain - 1, accu + data[at - 1], treat) +
|
|
if (at > remain) pick(at - 1, remain, accu, treat) else 0
|
|
}
|
|
|
|
fun main(args: Array<String>) {
|
|
var treat = 0
|
|
var total = 1.0
|
|
for (i in 0..8) treat += data[i]
|
|
for (i in 19 downTo 11) total *= i
|
|
for (i in 9 downTo 1) total /= i
|
|
val gt = pick(19, 9, 0, treat)
|
|
val le = (total - gt).toInt()
|
|
System.out.printf("<= : %f%% %d\n", 100.0 * le / total, le)
|
|
System.out.printf(" > : %f%% %d\n", 100.0 * gt / total, gt)
|
|
}
|