算法(二)

一、前缀和

一个拥有n个数的数组a[1],a[2],a[3]...a[n-1],a[n],求a[x]+a[x+1]+a[x+2]+...+a[y](n>=y>=x)。

输入:第一行为数组个数n,第二行n个数,第三行开始多组数据,每行两个数x,y(n>=y>=x),处理到EOF为止。

输出:对每组x,y输出a[x]+a[x+1]+a[x+2]+...+a[y]的值,每行一个数。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,a[200001],sum[200001];
    cin>>n;
    a[0]=0;
    sum[0]=0;
    for(int i=1; i<=n; i++)
        cin>>a[i];
    for(int i=1; i<=n; i++)
        sum[i]=a[i]+sum[i-1];
    int x,y;
    while(cin>>x>>y)
    {
        cout<<sum[y]-sum[x-1]<<endl;
    }
    return 0;
}

 

posted @ 2020-05-18 16:37  !!_!!  阅读(193)  评论(0)    收藏  举报