You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.1 KiB

2 years ago
##[$AcWing$ $795$ 前缀和](https://www.acwing.com/problem/content/797/)
### 一、题目描述
输入一个长度为 $n$ 的整数序列。
接下来再输入 $m$ 个询问,每个询问输入一对 $l,r$。
对于每个询问,输出原序列中从第 $l$ 个数到第 $r$ 个数的和。
**输入格式**
第一行包含两个整数 $n$ 和 $m$。
第二行包含 $n$ 个整数,表示整数数列。
接下来 $m$ 行,每行包含两个整数 $l$ 和 $r$,表示一个询问的区间范围。
**输出格式**
共 $m$ 行,每行输出一个询问的结果。
**数据范围**
$1≤l≤r≤n,1≤n,m≤100000,1000≤数列中元素的值≤1000$
### 二、实现代码
```cpp {.line-numbers}
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int q[N];
int s[N];
// 一维前缀和
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> q[i];
s[i] = s[i - 1] + q[i];
}
while (m--) {
int l, r;
cin >> l >> r;
printf("%d\n", s[r] - s[l - 1]);
}
return 0;
}
```