思想:
运用数学知识数列的前N项和
s[ i ] = s[ i - 1 ] + a[ i ];
注意事项:
数组的存储从索引为1的位置开始存储。因为s0 = 0
代码如下:
package cn.liyi.day05;
import java.util.Scanner;
public class Demo795 {
public static final int N = 100010;
public static int[] a = new int[N];
public static int[] s = new int[N];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数组的长度和询问次数:");
int n = sc.nextInt();
int m = sc.nextInt();
System.out.println("================");
for(int i = 1; i <= n; i ++) {
a[i] = sc.nextInt();
}
for(int i = 1; i <= n; i ++) {
s[i] = s[i - 1] + a[i];
}
while (m -- > 0) {
System.out.println("请输入边界:");
int l = sc.nextInt();
int r = sc.nextInt();
System.out.println(s[r] - s[l - 1]);
}
}
}