[R12A] 箭头
- 难度 入门
- 时限 1s
- 空限 512m
- 模拟
数据规模:。
思路
整个图形分成两部分:上半部分是底边长 、高 的等腰三角形,第 行( 从 1 开始)有 个前导空格和 个 #;下半部分是 行「 个空格加一个 #」。
逐行构造字符串输出即可,总宽度为 。
复杂度:时间 ,空间 。
仓颉实现
import std.env.*
import std.convert.*
main(): Int64 {
let reader = getStdIn()
let n = Int64.parse(reader.readln().getOrThrow())
for (i in 0..n) {
let sb = StringBuilder()
for (j in 0..(n - 1 - i)) {
sb.append(" ")
}
for (j in 0..(2 * i + 1)) {
sb.append("#")
}
println(sb.toString())
}
for (i in 0..n) {
let sb = StringBuilder()
for (j in 0..(n - 1)) {
sb.append(" ")
}
sb.append("#")
println(sb.toString())
}
return 0
}
要点:
- 第 行()的三角形部分为 个空格加 个
#,逐行用StringBuilder拼接后输出。 - 区间
0..k不含右端点,行首空格数为 0 时循环体不执行,恰好对应最后一行无前导空格的情况。