CF1571A Sequence of Comparisons 的题解
洛谷传送门
CF传送门
题目大意
原来,Petya 有一个整数数列 a a a 它的长度为 n n n。但随着时间的推移,数列自身丢失了,只有 n − 1 n-1 n−1 组相邻元素的关系比较结果仍然存在。也就是说,对于每一个从 1 1 1 到 n − 1 n-1 n−1 的 a i a_i ai,Petya 知道以下三个情况之一:
-
a i < a i + 1 a_i<a_i+1 ai<ai+1。
-
a i = a i + 1 a_i=a_i+1 ai=ai+1。
-
a i > a i + 1 a_i>a_i+1 ai>ai+1。
Petya 想知道 a 1 a_1 a1 和 a n a_n an 的大小关系是否唯一。
你需要帮助 Petya 确定 a 1 a_1 a1 和 a n a_n an 的大小关系或报告无法明确确定结果。
思路
根据题目和样例,此题可以分四种情况来考虑:
-
全部为
=
,输出=
。 -
全部为
>
与=
,输出>
。 -
全部为
<
与=
,输出<
。 -
既有
<
也有>
,输出?
。
有了这些我们就可以用一个循环语句和四个分支结构来完成。
因为这题只能用 Kotlin 语言,所以在这里给大家介绍一下 Kotlin 语言中的循环语句和 C++ 语言的区别。
Kotlin 语言有两种循环结构,一种是 loop@ for(i in 1..t)
这个语句其实就是 C++ 的 for
循环。loop@ for(i in 1..t)
和 for (int i = 1; i <= t; i ++)
是同一个意思。
另一种 repeat(t)
就是 C++ 中的 while
循环。repeat(t)
和 while (t --)
是同一个意思。
代码
import java.util.Scanner
fun main() {
val t = readLine()!!.toInt()
loop@ for(i in 1..t) {
val s = readLine()!!
if (!('>' in s || '<' in s)) {
println("=")
}
else if (!('>' in s)) {
println('<')
}
else if (!('<' in s)) {
println('>')
}
else {
println('?')
}
}
}
PS:不用 Kotlin 会 waiting,所以请大家用 Kotlin 做。