题目描述
给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。
输入描述
第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间下标:a,b (b > = a),直至文件结束。
输出描述
输出每个指定区间内元素的总和。
输入示例
5
1
2
3
4
5
0 1
1 3
输出示例
3
9
熟悉一下ACM的输入和输出模式,解题:
//读取n
guard let nLine = readLine(), let n = Int(nLine) else {
fatalError("Invalid input for n")
}
// 读取 n 行整数
var nums:[Int] = []
for _ in 0..<n {
if let line = readLine(), let number = Int(line) {
nums.append(number)
} else {
fatalError("Invalid array input")
}
}
//构建前缀和 p[i] 表示 nums[0] 到 nums[i] 的和
var p = [Int]()
var presum = 0
for i in 0..<n {
presum += nums[i]
p.append(presum)
}
//循环读取查询
while let queryLine = readLine() {
let parts = queryLine.split(separator: " ").compactMap({ Int($0) })
if parts.count != 2 { continue }
let a = parts[0]
let b = parts[1]
guard a <= b, b < n, a >= 0 else {
print("Invalid range")
continue
}
var sum = 0
if a == 0 {
sum = p[b]
} else {
sum = p[b] - p[a-1]
}
print(sum)
}