Description
有
m
副相同的牌,每副牌有
Input
两个整数
Output
输出魔法师拿的牌和观众的牌一样的概率,误差不超过 10−6
Sample Input
2 2
Sample Output
0.6666666666666666
Solution
两种情况,魔法师恰拿到观众那张牌,概率 1n ,魔法师没有拿到观众那张牌,概率 n−1n ,但是魔法师拿到了其他 m−1 张和观众那张牌相同的牌,即要从 n⋅m−1 张牌中拿到 m−1 张牌中的一张,概率为 m−1n⋅m−1 ,故答案为 1n+n−1nm−1n⋅m−1 ,注意 n=m=1 时要特判
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int INF=0x3f3f3f3f,maxn=100001;
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if(n==1&&m==1)printf("1\n");
else printf("%.10f\n",(1.0*(m-1)/(n*m-1)*(n-1)+1)/n);
}
return 0;
}