🌈 Scala 实现
题目描述:
- 一个整数可以由连续的自然数之和来表示,给定一个整数,计算该整数有几种连续自然数之和的表达式,并打印出每一种表达式。
输入描述:
- 一个目标整数t 1<= t <=1000
输出描述:
- 该整数的所有表达式和表达式的个数,如果有多种表达式,自然数个数最少的表达式优先输出
- 每个表达式中按自然数递增输出
- 在每个测试数据结束时,输出一行"Result:X",其中X是最终的表达式个数
示例
输入:
- 9
输出:
9=9 9=4+5 9=2+3+4 Result:3
说明:
- 整数9有三种表达方法:
输入:
- 10
输出:
10=10 10=1+2+3+4 Result:2
代码:
def main(args: Array[String]): Unit = {
// 获取输入
val num = StdIn.readLine().toInt
// 存所有可能
val resList = new ListBuffer[String]()
// 获取所有可能
for (i <- 1 to num) {
var sum = 0
val buffer = new StringBuffer()
breakable {
for (j <- i to num if sum < num) {
sum += j
buffer.append(j).append("+")
// 当值相等时,将当前表达式添加到resList中,并跳出当前循环
if (sum == num) {
resList += (num + "=" + buffer.substring(0, buffer.length() - 1))
break()
}
}
}
}
resList.sortWith((o1, o2) => {
// 对输出结果进行排序
if (!o1.length.equals(o2.length)) {
o1.length.compareTo(o2.length) < 0
} else {
o1.compareTo(o2) < 0
}
})
.foreach(println)
// 输出最后一行
println(s"Result:${resList.length}")
}
❤️ END ❤️