拼多多第三题的解题思路

/**
 * 第三题的解题思路
 */
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));
    }
}

#拼多多##笔试题目##题解#
全部评论
优秀,看懂了
点赞 回复 分享
发布于 2019-09-02 13:38

相关推荐

脑子烧了,这是什么规律啊。1,10,19,37,64,(&nbsp;)
hl7:0*9+1 1*9+1 2*9+1 4*9+1 7*9+1,9的系数是前两个系数相加再加1?
投递美团等公司10个岗位
点赞 评论 收藏
分享
这SQL做的我真是
投递阿里巴巴控股集团等公司10个岗位
点赞 评论 收藏
分享
评论
2
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务