0
点赞
收藏
分享

微信扫一扫

C++ 数苹果

_鱼与渔_ 2022-01-08 阅读 93
c++算法

题目:数苹果

描述

今年苹果大丰收了,大人们在忙着采摘苹果,摘下来的苹果堆放成了很多堆,所有的苹果堆排成了一排。宣宣一个人在苹果堆旁边玩,她已经知道每堆里有多少个苹果。

现在,她想知道从第a堆到第b堆共有多少个苹果。你能帮帮她吗?

输入

输入文件名为apple.in。

第一行,一个整数n,表示苹果堆的个数;

第二行,n个正整数,依次表示第1堆、第2堆、……、第n堆的苹果个数;

第三行,一个整数m,表示询问的次数;

以下m行,每行两个正整数a,b,表示问从第a到b堆的苹果个数。

输出

输出文件名为apple.out。

对于每个询问a,b输出一行,表示第a堆到第b堆的苹果个数。

输入样例

5
1 2 3 4 5
3
1 3
2 4
1 5

输出样例

6
9
15

提示

对于100%的数据:每堆苹果的数量<=100; a<=b。

对于40%的数据:n,m<=1000;

对于100%的数据:n,m<=100000。

这道题如果用循环,运行时会超时

在此,有一个新方法,在输入a[ i ]时将a[ i ]的值设为前面所有数字相加的和,输出时只需输出

a[ y ]-a[ x-1 ]的值。

输入:12345
存入:1361015

这样,代码就不会运行超时了

#include <iostream>
using namespace std;
int main()
{
long long int n,x,y,m,i,j,sum;
cin >> n;
int a[n+1];
a[0]=0;
for (i=1;i<=n;i++)
{
cin >> a[i];
a[i]+=a[i-1];//a[i]的值等于目前所有输入的值的和
}
cin >> m;
for (i=1;i<=m;i++)
{

cin >> x >> y;
sum = a[y]-a[x-1];//输出x至y堆苹果的和
cout << sum << endl;
}

return 0;
}
举报

相关推荐

0 条评论