花费期望 King Arthur's Birthday Celebration(poj3682)

题目:
国王庆祝生日,第 i2i1 (千)个硬币,至于哪一天结束,给定一个正整数 k ,每天抛一次硬币,如果出现第k次正面朝上,就结束庆祝,正面朝上的概率为 p
问庆祝的天数和花费的金币的期望。

思路:

f[i]i天结束的概率,则 f(i)=(i1k1)×pk×(1p)ik ,总概率为 f(i)=1 ,其中 i[k+ ,以下均为此范围
则有, pki=k((i1k1)(1p)ik)=1 ,即: i=k((i1k1)(1p)ik)=1pk
g(k)=i=k((i1k1)(1p)ik)=1pk
那么,天数的期望:

days=i=k(if(i))=pk×i=k(i×(i1k1)×(1p)ik)=kpk×i=k((ik)×(1p)ik)=kpkg(k+1)=k×pkpk+1=kp

花费的期望:

cost=i=k(i2f(i))//i1+3+5+...+2i1=i2;=pk×(i2(i1k1)×(1p)ik)=kpk×(i(ik)×(1p)ik)=kpk×((i+1)×(ik)×(1p)ik)kpk×((ik)(1p)ik)=k(k+1)pk((i+1k+1)(1p)ik)kpkg(k+1)=k(k+1)×pkpk+2days=k(k+1)p2days=days×k+1pdays

#include <iostream>
#include <cmath>
#include <stdio.h>
#include <map>
#include <algorithm>
using namespace std;
#define LL long long 
#define MAX 1000010

int main()
{
    int n,k;
    double p;
    while (scanf("%d",&k),k)
    {
        scanf("%lf",&p);
        double ans=k/p;
        printf("%.3lf %.3lf\n",ans,ans*(k+1)/p-ans);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值