题意:亚瑟王掷一枚硬币,概率p正面向上,概率1-p反面朝上,现在亚瑟王要掷 k 次正面朝上,第 i 次掷硬币时花费 2∗i−1 。问:期望要掷多少枚硬币才能达到 k 次正面朝上,以及达到 k 次正面朝上时的花费。
Ei表示掷出了i枚正面朝上的硬币的期望次数。
Fi表示掷出了i枚正面朝上的硬币的期望费用。
对于期望的理解,就是没有一个确切的值,可以看成是多种不同概率的结果的一个组合。
Ei = pEi-1 + (1-p)Ei + 1 1表示抛出了第i枚硬币用去1次,如果是正面那么要到i枚正面硬币只需要再抛出Ei-1次,如果是反面还需要再抛Ei次。
Fi = p(Fi-1 + 2 * (Ei-1+1) -1) + (1-p)(Fi + 2 * (Ei+1) -1) 第i枚硬币抛出,如果是正面,那么现在抛出的这枚就是第Ei-1 + 1 枚,如果是反面,现在抛出的这枚就是第Ei + 1 枚。
#include<cstdio>
#include<cstring>
int main()
{
int k;
double p;
double E[1005], F[1005];
while (~scanf("%d", &k) && k != 0)
{
scanf("%lf", &p);
E[0] = 0;
F[0] = 0;
for (int i = 1; i <= k; i++)
{
E[i]=1/p+E[i-1];
F[i]=F[i-1]+2*E[i-1]-2*E[i]+(1+2*E[i])/p;
}
printf("%.3f %.3f\n", E[k], F[k]);
}
return 0;
}