58. 区间和(第九期模拟笔试) (kamacoder.com)
暴力解法大概率超时,应采用前缀和解法
p[i] 表示 vec[0] 到 vec[i] 的累加和
求 vec[m] 到 vec[n] 的和只需要 p[n] - p[m] 即可
知识点
input函数
Python3 中
raw_input() 和 input() 进行了整合,去除了 raw_input( ),仅保留了input( )函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型。
需要接收整数类型时,可以借助 int() 函数转为整数类型。
Python2 中
raw_input( ) 和 input( ),两个函数都存在,其中区别为:
- raw_input( ) 将所有输入作为字符串看待,返回字符串类型。
- input( ) 只能接收"数字"的输入,在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )。
map函数
语法:map(function, iterable, ...)
- function -- 函数
- iterable -- 一个或多个序列
Python 2 返回列表。
Python 3 返回迭代器,需要使用 list() 函数将其转为列表。
try...except...异常处理
标准异常链接:Python 异常处理 | 菜鸟教程 (runoob.com)
n = int(input())
arr = [0]*n
p = [0]*n
for i in range(n):
arr[i]=int(input())
p[0]=arr[0]
for i in range(1,n):
p[i]=p[i-1]+arr[i]
# print(p)
while True:
try:
a,b=map(int,input().split())
if a>=0 and b<n and b>=a:
if a==0:
res=p[b]
else:
res=p[b]-p[a-1]
print(res)
else:
continue
except EOFError:
break
except ValueError:
continue