#include <iostream>
using namespace std;
int gcd(int a, int b) { //计算最大公约数
if (b == 0)
return a;
else
return gcd(b, a % b);
}
void simplifyFraction(int& numerator, int& denominator) { //将分数化为最简形式
int commonDivisor = gcd(numerator, denominator);
numerator /= commonDivisor;
denominator /= commonDivisor;
}
int main()
{
int n, m, a, zi, mu;
cin >> n >> m >> a;
/*
n代表门数
m代表后面有羊的门的数量
a代表选择后打开的无羊门数量
*/
if (m >= n || a > (n - m)) {
cout << "输入不合法";
} else {
/*
公式说明:
题目:设n门,m羊,选择1门,开a(a<=n-m)门,求换后胜率.
由题意:应分两种情况:
1. 选中有羊门时:
易知,这种情况的几率为m/n.
换门后还剩余(m-1)个有羊门,(n-a-1)个可供换的门.
则此时胜率为(m-1)/(n-a-1).
2. 选中无羊门时:
易知,这种情况的几率为[1-(m/n)]即(n-m)/n.
换门后还剩余m个有羊门,(n-a-1)个可供换的门.
则此时胜率为m/(n-a-1).
因为两种情况的几率分别为m/n与(n-m)/n.
所以总胜率为(m/n)*[(m-1)/(n-a-1)]+[(n-m)/n]*[m/(n-a-1)]
化解为:m(n-p)/n(n-a-1)
感谢我吧,这么用心的作者不多了
*/
zi = m * (n - 1); //胜率的分子
mu = n * (n - a - 1); //胜率的分母
simplifyFraction(zi, mu);
//结果以最简分数呈现
if (zi >= mu) {
cout << 1;
} else {
cout << zi << "/" << mu;
}
}
return 0;
}