过段时间 Codeforces 要举办 kotlin 专场,kotlin 的作者出题,顺便学下 kotlin 的语法。
翻译
给你两个整数 n 和 m。你需要构造一个长度为 n 的数组 a,其中需要包含 n 个非负整数,并且这个队列的元素的和为 m。要求以下公式的值最大。
输入格式
第一行包含一个数字 t,表示 t 个测试用例。
每个测试用例包含一行输入,n m,用空格分隔。
输出格式
每个测试用例输出一行,输出以上公式可能的最大值。
分析
分几种情况,如果 n == 1,那么只能是 0
如果 n == 2,那么最大情况就是 m 0 或者 0 m
如果 n >= 3,那么最大情况就是 0 0 0 0 m 0 0 ...
代码(kotlin)
// https://codeforces.com/contest/1353/problem/A
import java.io.*
private var br: BufferedReader? = null
fun br(): BufferedReader? {
if (br == null) {
var isLocal = false
val file = File("./io/input.txt")
try {
isLocal = file.exists()
} catch (e: Exception) {
}
br = if (isLocal) {
BufferedReader(BufferedReader(FileReader(file)));
} else {
BufferedReader(InputStreamReader(System.`in`))
}
}
return br
}
private fun readLn() = br()?.readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
private fun readArray() = readStrings().map { it.toInt() }.toIntArray() // list of ints
fun case() {
val (n, m) = readInts()
if (n == 1) {
println(0)
} else if (n > 2) {
println(m * 2)
} else {
println(m)
}
}
fun main() {
init()
var t = readInt()
while (t-- > 0) {
case()
}
}
更多代码尽在 https://github.com/Tconan99/Codeforces
by 费城的二鹏 2020.05.19 长春
网友评论