这题直接使用for循环累加会超时
我们应当使用前缀和数组来做
当输入数据的时候,我们就可以把数组预处理好
这里的sum数组长度应当为n+1,因为要保留sum[0]为前0个元素,也就是0
最后输出sum[r]-sum[l-1]即可
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int q=scanner.nextInt();
long a[]=new long[n];
long sum[]=new long[n+1];
for (int i = 0; i < a.length; i++) {
a[i]=scanner.nextLong();
sum[i+1]=sum[i]+a[i];
}
while(q-->0) {
int l=scanner.nextInt();
int r=scanner.nextInt();
System.out.println(sum[r]-sum[l-1]);
}
}
}



京公网安备 11010502036488号