类型:前缀和;
题目描述
苹果丰收了,有n堆苹果,小红就在苹果堆旁。小红已经知道了每堆苹果有多少个。她要问一问从第a堆到第b堆一共有多少个苹果。
输入
输入数字n,然后输入n个数据。再输入m,然后输入m行数据。
输出
输出m次a到b堆一共有多少个。
样例输入 Copy
5 1 2 3 4 5 3 1 3 2 4 1 5
样例输出 Copy
6 9 15
提示
对于%80的数据:0≤n≤10000;
对于%100的数据:0≤n≤100000。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int n=10e5+10;
int arr[n];//数据存入数组
int main(){
int a;
scanf("%d",&a);
for(int i=1;i<=a;i++){
int b;
scanf("%d",&b);
arr[i]=b+arr[i-1];//前缀和
}
int c;
scanf("%d",&c);
for(int i=0;i<c;i++){
int x,y,z=0;
scanf("%d%d",&x,&y);//输入a-b堆数
z=arr[y]-arr[x-1];//前缀和答案
printf("%d\n",z);
}
return 0;
}
本文介绍了一段C++代码,用于解决计算从第a堆到第b堆的苹果总数问题,通过计算前缀和来快速得到结果。程序适用于处理一定范围内的数据量。
1104





