前缀和
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; }