算法(二)
一、前缀和
一个拥有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; }

浙公网安备 33010602011771号