poj3682 King Arthur's Birthday Celebration

제목:
왕 은 생일 을 축하 하고 i 일 에 2i - 1 (천) 개의 동전 을 썼 습 니 다. 어느 날 이 끝 날 지 에 대해 정수 k 를 정 하고 매일 한 번 동전 을 던 졌 습 니 다. 만약 에 k 번 째 정면 이 위로 향 하면 축 하 를 끝 냅 니 다. 정면 이 위로 향 할 확률 은 p 입 니 다.
축하 일수 와 비용 이 드 는 금화 에 대한 기 대 를 묻는다.
생각:
순 확률 문제,
f [i] 를 i 일 째 끝 날 확률 로 설정 하면 f [i] = c (i - 1, k - 1) * p ^ k * (1 - p) ^ (i - k) 이지 만 총 확률 은 > f [i] = 1 이 고 그 중에서 i * 8712 ° [k, + 표시) 이 며 아래 는 모두 이 범위 이다.
즉, p ^ k * ∑ (c (i - 1, k - 1) * (1 - p) ^ (i - k) = 1, 즉: ∑ (c (i - 1, k - 1) * (1 - p) ^ (i - k) = 1 / (p ^ k), 이 등식 아래 에 유용 하 다
그렇다면 일수 의 기대:
days
=∑(i*f[i])
=p^k*∑(i*c(i-1,k-1)*(1-p)^(i-k))
=k*p^k*∑(c(i,k)*(1-p)^(i-k))
=k*p^k/p^(k+1)
=k/p
소비 하 는 기대:
cost = ∑ (i * i * f [i]) / / i 일이 끝나 면 1 + 3 + 5 +... + 2 i - 1 = i * i 를 쓴다.
=p^k*∑(i*i*c(i-1,k-1)*(1-p)^(i-k))
=k*p^k*∑(i*c(i,k)*(1-p)^(i-k))
=k*p^k*∑((i+1)*c(i,k)*(1-p)^(i-k))-p^k*∑(c(i,k)*(1-p)^(1-k))
=k*(k+1)*p^k*∑(c(i+1,k+1)*(1-p)^(i-k))-days
=k*(k+1)*p^k/(p^(k+2))-days
=k*(k+1)/p^2-days
=days*(k+1)/p-days
#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
",ans,ans*(k+1)/p-ans); } }

좋은 웹페이지 즐겨찾기