前缀和
Subject:有数组a[n],取多组0<x<y<n,求多组a[x]~a[y]的和。
-
步骤:1.求s[1]=a[1],s[2]=a[1]+a[2],s[3]=a[1]+a[2]+a[3]...(下标从1开始)
2.ans=s[y]-s[x-1]。
/*输入为:1<n<1e5个整数 1<m<1e5组数 -1000<a[n]<1000整数数列 x y共m组*/
#include<stdio.h>
const int N = 1e5 + 9;
int a[N], s[N];
int main()
{
int m, n, i,x,y;
scanf("%d %d", &n, &m);
s[0] = 0;
for (i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
s[i] = s[i - 1] + a[i];
}
while (m--)
{
scanf("%d %d", &x, &y);
printf("%d\n", s[y] - s[x - 1]);//要把a[x]算进去,∴s[x-1]
}
return 0;
}