前缀和
sum前缀和:
适用:求数列第n项到第m项的和
思路:定义sum = 前n项的和;
定义sum[0] = 0 更好编写;
第n项到第m项的和 = sum[m] – sum[n-1];
例 :
有数列 : 2 4 5 7 8 求第2项到第4项和
sum[4] = 2+4+5+7
sum[1] = 2
题目:
输入一个长度为 n 的整数序列
接下来再输入 m 个询问,每个询问输入一对 l,r。
对于每个询问,输出原序列中从第 l 个数到第 r个数的和。
输入格式:
第一行包含两个整数 n和 m。
第二行包含 n个整数,表示整数数列。
接下来 m 行,每行包含两个整数 l 和 r,表示一个询问的区间围。
输入格式:
共 m行,每行输出一个询问的结果。
代码实现:
#include<bits/stdc++.h>
using namespace std;
int m ,n;
const int N = 1e5+10;
int sum[N] , a[N];
int main()
{
cin>>n>>m;
for(int i = 1 ; i <= n ;i ++){
cin>>a[i]; //输入数列
sum[i] = sum[i-1] + a[i]; // 累加 :边输入数列边加入sum
}
while(m--){ // m为询问
int l = 0 , r= 0;
cin>>l>>r; //输入询问两端
cout<<sum[r]-sum[l-1]<<endl;
}
return 0;
}