前缀和是一种快速求解区间和的算法。
首先给出一个数组a,用一个数组b,用来记录前i项的和,关系式为b[i]=a[i]+b[i-1]
这样要求q到w之间的数的和只需要让b[w]-b[q-1];
#include<bits/stdc++.h>
using namespace std;
const int x=1e5+5;
const int med=1e9+7;
int main()
{
long long a[x],b[x];
long long n,k;
cin>>n>>k;
b[0]=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=(b[i-1]+a[i])%med;
}
while(k--)
{
long long q,w;
cin>>q>>w;
cout<<b[w]-b[q-1]<<endl;
}
system("pause");
}