京东笔试股票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);
}
}
}