利用二分法
小易的英语软件
http://www.nowcoder.com/questionTerminal/f51e08c7642345fb96dd7b29792b0790
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
public class ScoreToPercent {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int n = scanner.nextInt();
int[] scores = new int[n];
for (int i=0;i<n;i++)
scores[i]=scanner.nextInt();
HashMap<Integer, Integer> map = new HashMap<>();
int[] sort = Arrays.copyOfRange(scores, 0, scores.length);
Arrays.sort(sort);
for (int i=0;i<n;i++){
int left=0;
int right=n-1;
while (left<=right){
int mid=left+(right-left)/2;
if (sort[mid]<=scores[i])
left=mid+1;
else{
right=mid-1;
}
}
// System.out.println("left:"+left);
map.put(i,left-1);
}
int m = scanner.nextInt();
for (int i=0;i<m;i++){
double res = (100.0*map.get(scanner.nextInt() - 1))/ n;
System.out.println(String.format("%.6f",res));
}
}
}
}

亚马逊成长空间 99人发布