前缀和

前缀和

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个数的和。

输入格式:

第一行包含两个整数 nm

第二行包含 n个整数,表示整数数列。

接下来 m 行,每行包含两个整数 lr,表示一个询问的区间围。

输入格式:

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;
}

上一篇
下一篇