区间和.58
本题来源于卡码网
题目描述
给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。
输入描述
第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间下标:a,b (b > = a),直至文件结束。
输出描述
输出每个指定区间内元素的总和。
输入示例
5
1
2
3
4
5
0 1
1 3
输出示例
3
9
暴力累加解法会超时
所以设置一个单独的数组sums记录从0到当前位置的累加和。
import sys
input = sys.stdin.read
def main():
data = input()
total_sum=0
data_list = data.split()# 将数据按空格分割成列表
n=int(data_list[0])# 应该是一个整数,而不是字符串
nums=[]
sums = [0] * n # 初始化 sums 列表
for i in range(n):
nums.append(int(data_list[1 + i])) # 使用 append 方法添加元素
for i in range(n):
sums[i] = sums[i - 1] + nums[i] if i > 0 else nums[i]
i=0
while i < len(data_list) - (1 + n):
a=int(data_list[1+n+i])
b=int(data_list[1+n+i+1])
total_sum=sums[b]-(sums[a - 1] if a > 0 else 0)
print(total_sum)
i+=2
if __name__ == "__main__":
main()