京东笔试股票27%为啥呢,一直调不过去
最开始版本:
import java.util.Arrays; import java.util.Scanner; public class JingDong { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input[] = scanner.nextLine().split(" "); int m = Integer.parseInt(input[0]); int n = Integer.parseInt(input[1]); int a[] = new int[m]; String s[] = scanner.nextLine().split(" "); for(int i=0;i<m;i++){ a[i] = Integer.parseInt(s[i]); } Arrays.sort(a); int q = Integer.parseInt(scanner.nextLine()); for(int j=0;j<q;j++){ int cur = Integer.parseInt(scanner.nextLine()); int sum = 0; int index = 1; int jishu = 0; for(int p =cur-1;p>=0;p--){ jishu++; sum = sum + a[p]*index; if(jishu==n){ index++; jishu=0; } } System.out.println(sum); } } }做了改进后:
import java.util.Arrays; import java.util.Scanner; public class JingDong { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input[] = scanner.nextLine().split(" "); int m = Integer.parseInt(input[0]); int n = Integer.parseInt(input[1]); int a[] = new int[m]; String s[] = scanner.nextLine().split(" "); int he[] = new int[m]; Arrays.fill(he,0); for(int i=0;i<m;i++){ a[i] = Integer.parseInt(s[i]); if(i==0) he[i] = a[i]; else he[i] = he[i-1]+a[i]; } Arrays.sort(a); int q = Integer.parseInt(scanner.nextLine()); for(int j=0;j<q;j++){ int cur = Integer.parseInt(scanner.nextLine()); int sum = 0; int index = 1; for(int p =cur-1;p>=0;p=p-n){ int c = he[p]-(p>=n?he[p-n]:0); sum = sum+c*index; index++; } System.out.println(sum); } } }