输入
第一行给出一个n(1 <= n <= 100000), 代表有n个数
接下来一行中有n个数a[i], 下标从1 开始 (1 <= a[i] <= 10000)
接下来给出一个q (0 <= q <= 100000)
表示接下来有 q 行, 每行两个数 l(1 <= l <= 10000), r (l <= r <= 100000)
输出
一共q行, 每行一个数, 表示从 a[l] + … + a[r] , (即从下标l, 加到下标r 的和)
预处理防止超时 这题用到了 前缀和预处理
#include<cstdio>
#include<iostream>
using namespace std;
int n, q;
int a[100009];
int sum[100009];
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
scanf("%d",&a[i]);
}
for(int i = 1; i <= n; i++)
{
sum[i] = sum[i-1] + a[i];
}
cin >> q;
while(q--)
{
int L, R;
scanf("%d%d", &L, &R);
printf("%d\n", sum[R] - sum[L - 1]);
}
return 0;
}