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 做。
文章介绍了CF1571A题目,涉及一个整数序列,其中部分相邻元素的比较结果已知。目标是根据这些比较确定序列首尾元素的大小关系。解题策略是检查所有相邻元素的关系,如果全为=则输出=,全为>或<输出对应符号,否则输出?.文章还提到了Kotlin语言中的for循环和repeat循环与C++中相应循环的对应关系。
10万+

被折叠的 条评论
为什么被折叠?



