拼多多第三题的解题思路
/**
* 第三题的解题思路
*/
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));
}
} #拼多多##笔试题目##题解#
深信服公司福利 794人发布

