链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
输入描述:
输出描述:
输出q行,每行代表一次查询的结果.
实例
输入:
3 2
1 2 4
1 2
2 3
输出:
3
6
实现代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+9;
using ll=long long;
ll a[N];
int main()
{
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++)cin>>a[i],a[i]+=a[i-1];
while(q--)
{
int l,r;
cin>>l>>r;
cout<<a[r]-a[l-1]<<endl;
}
return 0;
}
问题分析:
根据题目可以知道此题目求数组的前缀和即数组a[n]的前n项和 ,但仔细看题有知道题目要求求数组l到r之间每一项的和,因此我们可以直接求出前r项的和再减去前l项的即可求出所需区段的数组和。
题目中要求分次输出每一次所求的和,因此可以使用循环输出每次计算的结果。