你和你的朋友在欣喜之余,想计算一下排在队尾的两个人同时拿到一种票的概率是多少
(包括同时拿A 类票或B类票) 假设工作人员准备了2n 张球票,其中n 张A类票,n 张B类票,并且排在队伍中的人每人必须且只能买一张球票(不管掷到的是该买A 还是该买B).
输入描述 Input Description
输入文件仅一行,包含球票数2n . 其中,0<n<=1250 ,n 为整数。
输出描述 Output Description
输出文件只包含一个数,为拿到同一种票的概率,精确到小数点后4 位。
样例输入 Sample Input
256
样例输出 Sample Output
0. 9500
那么此时的排队的第一个人只有两种选择,拿A类票或者B类票
抛硬币得到的可能性当然是二分之一,所以说f[i-1][j](当前第一人拿了A类票)和f[i][j-1](当前第一人拿了B类票)各占二分之一
这样的话代码就很简单了。。。。
#include<cstdio>
#include<iostream>
using namespace std;
double f[1500][1500];
int main(){
int n;
cin>>n;
n=n/2;
for(int i=2;i<=n;i++)
f[i][0]=f[0][i]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
f[i][j]=f[i-1][j]*0.5+f[i][j-1]*0.5;
printf("%.4f",f[n][n]);
}