牛客国庆集训派对Day2 H 卡牌游戏【期望】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013852115/article/details/82927339

链接:https://www.nowcoder.com/acm/contest/202/H
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
Special Judge, 64bit IO Format: %lld

题目描述

小贝喜欢玩卡牌游戏。某个游戏体系中共有N种卡牌,其中M种是稀有的。小贝每次和电脑对决获胜之后都会有一个抽卡机会,这时系统会随机从N种卡中选择一张给小贝。普通卡可能多次出现,而稀有卡牌不会被重复抽到。小贝希望收集到K种稀有卡牌,她想知道期望需要多少次获胜才能实现这个目标。

输入描述:

数据有多组,第一行一个整数T表示数据组数。
每组数据一行,三个整数N,M,K .

输出描述:

对于每组数据,输出形如"Case #x: y",其中 x 为这组数据的编号(从1开始),y 为这组数据的答案。答案的绝对误差或相对误差在10-6以内都认为是正确的。

示例1

输入

复制

2
5 2 1
40 9 5

输出

复制

Case #1: 2.5
Case #2: 28.1146825397

备注:

1 ≤ T ≤ 100
1 ≤ N ≤ 105
1 ≤ M ≤ N
1 ≤ K ≤ M

思路:

取出第一个稀有的期望次数+...+取出第k个的期望次数。

代码:

#include <bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
#define MAXN 1005
int n,m,k;
int main()
{
    int t;
    scanf("%d",&t);
    for(int tt=1;tt<=t;tt++)
    {
        scanf("%d%d%d",&n,&m,&k);
        double ans=0;
        for(int i=0;i<k;i++)
        {
            ans+=1.0*(n-i)/(m-i);
        }
        printf("Case #%d: %.7f\n",tt,ans);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u013852115/article/details/82927339