```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点数解答]