算法1
思路:前缀和的初始化 s[i]=s[i-1]+a[i];
核心:s[r]-s[l-1]
C++ 代码
#include<iostream>
#include<cstdio>
using namespace std;
const int N=100010;
int n,m;
int a[N],s[N];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
//前缀和的初始化
for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i];//前i个数的和等于前i-1个数的和加上第i个数
while(m--){
int l,r;
scanf("%d%d",&l,&r);
printf("%d\n",s[r]-s[l-1]);//区间和计算
}
return 0;
}