酷代码 AI
菜单
服务商

用C++解决“分配小球2”问题,附代码实现

```cpp #include <iostream> using namespace std; const int MOD = 1e9 + 7; // 快速幂函数,用于计算 a^b % MOD long long fastPow(long long a, long long b) { long long res = 1; while (b > 0) { if (b & 1) { res = (res * a) % MOD; } a = (a * a) % MOD; b >>= 1; } return res; } // 计算组合数 C(n, k) % MOD long long combination(int n, int k) { long long numerator = 1, denominator = 1; for (int i = 1; i <= k; ++i) { numerator = (numerator * (n - i + 1)) % MOD; denominator = (denominator * i) % MOD; } // 使用费马小定理求分母的逆元 return (numerator * fastPow(denominator, MOD - 2)) % MOD; } int main() { int n, m; cin >> n >> m; long long ans = 1; int total = n * m; for (int i = 0; i < m; ++i) { ans = (ans * combination(total, n)) % MOD; total -= n; } // 消除堆之间的重复排列 ans = (ans * fastPow(fastPow(m, m), MOD - 2)) % MOD; cout << ans << endl; return 0; } ``` 这段代码实现了分配小球2的问题。首先定义了取模的常量`MOD`,`fastPow`函数用于快速计算幂取模,`combination`函数用于计算组合数取模。在`main`函数中,读取输入的`n`和`m`,通过循环计算组合数并累乘到结果`ans`中,最后消除堆之间的重复排列,输出最终结果。 ######[AI问答 | 501点数解答 | 2026-05-31 15:29:24]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]