package wangyi8_3; import java.util.*; /*网易笔试:第一行一个整数,代表班级人数,第二行是一个数组代表每个学生成绩,第三行是查询次数,第四行开始是查询的那几个人 * 样例输入: * 3 * 100 98 87 * 3 * 1 * 2 * 3 * 输出 66.666667 33.333333 0.000000*/ public class BaiFenSort { public static void main(String[] args) { List<String> ls=new ArrayList<String>(); Scanner in=new Scanner(System.in); String s; while(!(s=in.nextLine()).equals("")){ ls.add(s); }//输入最关键的一步 int n=0; Iterator<String> ite=ls.iterator(); n=Integer.parseInt(ite.next()); String stt=ite.next(); String[] dd=stt.split(" ");// //stt=stt.replace(" ","");//如果不重新赋值一下,原来的stt不会改变//另外,replaceAll的用法:s.replaceAll("\\d","f"):将s中所有的数字替换为f int[] chengji=new int[n]; for(int i=0;i<dd.length;i++){ chengji[i]=Integer.parseInt(dd[i]); } int sum=Integer.parseInt(ite.next()); int[] st=new int[ls.size()-3]; int i=0; while(ite.hasNext()){ st[i]=Integer.parseInt(ite.next()); i++; } test(n,chengji,sum,st); } public static void test(int n, int[] a, int num,int[] q){ double[] result=new double[num]; for(int i=0;i<num;i++){ int index=q[i]-1;//第几个人 int sum=0;//总共几个人小于等于他的分数 for(int x=0;x<n;x++){ if(a[x]<=a[index]) sum++; } double re= (double)(sum-1)*100/n; result[i]=re; } for (double i:result) { String shuchu = String.format("%.6f", i); System.out.println(shuchu); } } }
输入多行、输出小数点后6位
最新推荐文章于 2024-06-21 13:31:23 发布