描述
给定长度为NN的数组,进行QQ次查询,查询从第ii个元素长度为ll的子段所有元素之和。例如 1 2 3 4 -1,查询第2个元素开始长度为3的子段和 2 + 3 + 4 = 9,输出9
输入
第一行一个整数N(1≤N≤10^5)N(1≤N≤105)代表数组长度,第二行NN个整数a_1,a_2 ...... a_Na1,a2......aN代表数组序列。随后一行一个整数Q(1≤Q≤5*10^4)Q(1≤Q≤5∗104)代表查询次数。后面紧跟QQ行代表每次查询,每行由一个整数i,li,l组成,ii代表查询的起始元素位置,ll代表查询长度。题目保证数据合法。
输出
对于每组查询,单独一行输出结果。
输入样例 1
5 1 2 3 4 5 3 1 5 2 3 3 3
输出样例 1
15 9 12
提示
结果可能较大,C,C++请使用long long int类型
定义举例:long long int a;
输入举例:scanf("%lld",&a);
输出举例:printf("%lld",a);
代码如下:
#include<stdio.h>
int main()
{
long long int n,i,j,m,k;
long long int a[100002],b[100002],c[100002];
long long int s[100002];
scanf("%lld",&n);
for(i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
scanf("%lld",&m);
for(j=0;j<m;j++)
{
scanf("%lld%lld",&b[j],&c[j]);
}
for(j=0;j<m;j++)
{
s[j]=0;
for(k=b[j];k<=b[j]+c[j]-1;k++)
{
s[j]+=a[k-1];
}
}
for(i=0;i<m;i++)
{
printf("%lld\n",s[i]);
}
}