256
p = 0.9500
玛题记题目, 此题是一个数学问题
n为蓝球、红球各自的数量, 输入给的是2n
解析:这道题目的意思有点怪,它是想说两个通里的球依次取,当一个桶里为0,另一个不为0时也还可以继续取,那么剩余两个球就只有0 2, 2 0, 1 1三种情况,所以只要减去最后剩余1 1的情况即是答案,利用组合数学,剩下1 1,那么之前一共取走了2n - 2 个球,单次取红蓝球的概率都是0.5,组合顺序则有(从2n - 2 个球中取出n - 1 个的方案数)种,所以本题的求解就是
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long double LD;
LD C_div(int k, int n)
{
LD res = 1;
for (int i = n, j = 1; j <= k; i -- , j ++ )
res = res * i / j;
for (int i = 1; i <= k; i ++ ) res /= (LD)4.0;
return res;
}
int main()
{
int n;
cin >> n;
n /= 2;
printf("%.4llf", 1 - C_div(n - 1, 2 * n - 2));
return 0;
}