1545

输入
第一行给出一个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;
}

猜你喜欢

转载自blog.csdn.net/cosx_/article/details/109683162