花费期望 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);
    }

}

你可能感兴趣的:(花费期望 King Arthur's Birthday Celebration(poj3682))