链接:【模板】前缀和
题目描述
给定一个长度为n的数组a1,a2,....ana_1, a_2,....a_na1,a2,....an.
接下来有q次查询, 每次查询有两个参数l, r.
对于每个询问, 请输出al+al+1+....+ara_l+a_{l+1}+....+a_ral+al+1+....+ar
输入描述:
第一行包含两个整数n和q.
第二行包含n个整数, 表示a1,a2,....ana_1, a_2,....a_na1,a2,....an.
接下来q行,每行包含两个整数 l和r.
1≤n,q≤1051 \le n, q \le 10^51≤n,q≤105
−109≤a[i]≤109-10^9 \le a[i] \le 10^9−109≤a[i]≤109
1≤l≤r≤n1 \le l \le r \le n1≤l≤r≤n
输出描述:
输出q行,每行代表一次查询的结果.
示例1
输入
复制3 2 1 2 4 1 2 2 3
3 2 1 2 4 1 2 2 3
输出
复制3 6
3 6
C++代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,q;
cin>>n>>q;
long long a[100005];
long long pre[100005];
for(int i=1;i<=n;i++){
cin>>a[i];
pre[i]=pre[i-1]+a[i];
}
for(int i=0;i<q;i++){
int l,r;
cin>>l>>r;
cout<<pre[r]-pre[l-1]<<endl;
}
return 0;
}