暑期个人赛--第十一场--C

时间限制 1000 ms  内存限制 65536 KB

题目描述

在广茂的大森林里居住着一位可爱的小妹妹,以及一位怪叔叔。这天,怪叔叔让小妹妹为他做一锅蘑菇汤,可怜的小妹妹只好出门采集蘑菇。怪叔叔知道,森林里一共有n种不同的蘑菇,所以他提出了一个变态的要求,小妹妹必须为他做一锅包含所有n种蘑菇的汤。也就是说,小妹妹至少要采集齐所有的n种蘑菇。她想知道,平均要采多少朵蘑菇能满足怪叔叔的要求,注意,她每次所采的蘑菇是等概率的。

输入格式

多组case,case<=100。每组case一行一个数n,1<=n<=100。输入以EOF结束。

输出格式

每组case输出一行答案,保留六位小数。

输入样例

1
2

输出样例

1.000000
3.000000
赛中提交:NULL


赛后AC:YES


思路:

sigema(n/i)  (1<=i<=n)

期望的计算方式:

sigema(ki*pi)  ki为随机变量,pi为该随机变量对应的概率 


期望分为二项分布和几何分布,

二项分布是n次独立重复实验,每次实验都是相互独立的,求的是其中实验成功的次数。直接n*pi就好。

几何分布是n次独立重复实验,每次实验都是相互独立的,求的是第一次成功的实验次数。有无限种可能,但期望收敛,算法是1/pi


这里的就属于几何分布

每一次采摘就是一组实验,

第一次有可能采到不同的蘑菇概率是一,一次成功,不属于几何分布。

第二次采到不同蘑菇的概率是,9/10,而可以采一次,两次,三次...n次踩不到直到第n+1次才采到,所以期望是10/9

下同


ac代码:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string>
#include <vector>
#include <list>
#include <map>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <numeric>
#include <functional>

using namespace std;

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
        double a=(double)n,b=a;
        double sum=0;
        for(;b>0;b-=1){
            sum+=a/b;
        }
        printf("%lf\n",sum);
    }

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值