酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

小明非常喜欢做a+b的练习,他不清楚自己是否做对了,所以想找小文帮他看一下。 但是小文不喜欢做a+b,所以他只是随意地抽了3题来看一下。 假设小明做了n道,对了m道,那么抽的这三道题都对的概率是多少? 输入 第一行是一个整数k,表示样例的个数。 每个样例占一行,为两个整数n和m,0≤m≤n≤1,000 且3≤n。 输出 每行输出一个样例的结果,如果概率是1或者0,输出1或0。否则输出a/b的分数形式,a和b互质。,语言方向:C++,系统环境:Windows

```cpp #include <iostream> #include <iomanip> int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b); } int main() { int k; std::cin >> k; while (k--) { int n, m; std::cin >> n >> m; // 计算组合数C(n, m) long long numerator = 1, denominator = 1; for (int i = 0; i < m; ++i) { numerator *= (n - i); denominator *= (i + 1); int g = gcd(numerator, denominator); numerator /= g; denominator /= g; } // 计算抽到的三题都正确的概率 long double probability = (long double)(numerator * numerator) / (denominator * denominator * denominator); if (probability == 1.0 || probability == 0.0) { std::cout << std::fixed << std::setprecision(0) << probability << std::endl; } else { std::cout << numerator << "/" << denominator * denominator << std::endl; } } return 0; } ``` 改进建议: 1. 使用更具表达性的变量名以提高代码可读性。 2. 将计算组合数的部分提取成一个单独的函数,以提高代码的模块化和复用性。 3. 考虑在计算组合数时,使用动态规划来优化计算速度。 [2024-12-27 17:57:22 | AI写代码神器 | 793点数解答]

相关提问