拼多多第三题的解题思路
/** * 第三题的解题思路 */ public class Main2 { /* * * */ public static float getExpect(int n, int [] Xi,double total) { int maxValue=Xi[Xi.length-1]; double res=0.f; double pre=0.f; for(int j=1;j<=maxValue;j++) { double temp=1; for (int i = 0; i < Xi.length; i++) { //这里用min的目的是找出小于等于j存在的次数 // 相乘就算出了这个数组中小于等于j的次数总数 temp*=Math.min(j,Xi[i]); } temp-=pre;//而等于j的次数就等于总次数减去小于j的次数 其中pre依次保存着小于j的次数 res+=temp/total*j; pre+=temp; } return res; } public static void main(String[] args) { Scanner in=new Scanner(System.in); int N=in.nextInt(); int[] nums=new int[N]; double total=1.0; //所有的次数 for(int i=0;i<N;i++){ nums[i]=in.nextInt(); total*=nums[i]; } System.out.format("%.2f",getExpect(N,nums,total)); } }
#拼多多##笔试题目##题解#