zoukankan      html  css  js  c++  java
  • HDU 4586 Play the Dice (数学,概率,等比公式,极限)

    题意:给你一个n面的骰子每个面有一个值,然后其中有不同值代表你能获得的钱,然后有m个特殊的面,当你骰到这一面的时候可以获得一个新的机会

    问你能得到钱的期望。

    析:

    骰第一次     sum/n

    骰第二次     sum/n*(m/n)

    骰第三次     sum/n*(m/n)*(m/n)

    骰第四次     sum/n*(m/n)*(m/n)*(m/n)

    ............

    骰第k次     sum/n*(m/n)^k

       sum/n*(1+q+q^2+q^3+……+q^k)    q=m/n  k=inf    

    所以           sum/n*(1/(1-m/n))  =  (sum/n)*(n/n-m)  =sum/(n-m)

    那么 n=m时候期望无限大

    notice sum等于0的时候直接输出 0.00

    代码如下:

    #include <cstdio>
    #include <string>
    #include <cstdlib>
    #include <cmath>
    #include <iostream>
    #include <cstring>
    #include <set>
    #include <queue>
    #include <string>
    #include <algorithm>
    #include <vector>
    #include <map>
    using namespace std ;
    typedef long long LL;
    typedef pair<int, int> P;
    const int INF = 0x3f3f3f3f;
    const int maxn = 200 + 5;
    const long double eps = 1e-1000;
    int a[maxn];
    
    int main(){
        int n, m;
        while(scanf("%d", &n) == 1){
            int sum = 0;
            for(int i = 0; i < n; ++i){
                scanf("%d", &a[i]);
                sum += a[i];
            }
    
            scanf("%d", &m);
            int x;
            for(int i = 0; i < m; ++i)
                scanf("%d", &x);
    
            if(!sum){
                printf("%.2lf
    ", 0.0);
                continue;
            }
            else if(sum && m == n){
                printf("inf
    ");
                continue;
            }
    
            printf("%.2lf
    ", sum*1.0/(n-m));
    
        }
        return 0;
    }
    
  • 相关阅读:
    分享 35 套精美的 PSD 图标素材
    策略模式
    步步为营 .NET三层架构解析 二、数据库设计
    TFS安装与管理
    MMN实用架构过程概览
    Mvc学习
    三层架构[转]
    left join 和 left outer join 的区别
    300万条记录 like 和 charindex 函数性能比较
    jQuery插件InputLimitor实现文本框输入限制字数统计
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/5712325.html
Copyright © 2011-2022 走看看