Cpp实现计算所有组合数组价值之和并取模
```cpp #include <iostream> #include <vector> #include <algorithm> const int MOD = 1e9 + 7; // 计算组合数 C(n, k) int comb(int n, int k) { std::vector<std::vector<int>> dp(n + 1, std::vector<int>(k + 1, 0)); for (int i = 0; i <= n; ++i) { dp[i][0] = 1; if (i <= k) dp[i][i] = 1; for (int j = 1; j < i && j <= k; ++j) { dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % MOD; } } return dp[n][k]; } int main() { int n, k; std::cin >> n >> k; std::vector<int> nums(n); for (int i = 0; i < n; ++i) { std::cin >> nums[i]; } std::sort(nums.begin(), nums.end()); long long ans = 0; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { int diff = nums[j] - nums[i]; // 计算包含 nums[i] 和 nums[j] 的组合数 int count = comb(j - i - 1, k - 2); ans = (ans + (long long)diff * count) % MOD; } } std::cout << ans << std::endl; return 0; } ``` ### 代码解释 1. **组合数计算**:使用动态规划的方法计算组合数 `C(n, k)`。 2. **排序数组**:将输入的数组进行排序,方便后续计算差值。 3. **计算价值之和**:通过两层循环遍历数组,计算每对数字的差值,并计算包含这两个数字的组合数,将差值乘以组合数累加到答案中。 4. **取模**:由于答案可能很大,每次计算后对 `1e9 + 7` 取模。 ######[AI问答 | 546点数解答 | 2026-03-28 12:58:25]
- C++实现超全功能文字版象棋游戏:多文件代码大揭秘!(字节豆包 | 2285点数解答 | 2025-12-20 08:21:39)36
- 解决 consoleapplication40.cpp 中 buildtree 模板参数推导失败错误的方法(字节豆包 | 138点数解答 | 2024-11-10 23:42:06)241
- 车载系统 UML 类图设计:涵盖 Car、Engine、娱乐系统等的完整类定义与关系解析 (字节豆包 | 760点数解答 | 2024-08-15 22:51:04)314
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)346
- 神秘代码大揭秘:众多变量定义背后藏着什么秘密?(字节豆包 | 55点数解答 | 2024-08-16 15:22:27)332
- C++实现环形队列:从基本运算到完整操作示例(sqqueue.cpp与exp2-2.cpp详解)(阿里通义 | 962点数解答 | 2024-10-20 17:59:23)281
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)16
- C++ 实现正方形黑白瓦片图案最小转换方法求解(字节豆包 | 817点数解答 | 2025-11-25 19:03:09)70
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)316
- Python 高效求解:让数列变身接龙数列最少需删多少数?(字节豆包 | 493点数解答 | 2025-12-13 10:25:59)63
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)52
- 无名杀1.11.0:三国杀“韬晦”技能代码详解,开发避坑指南! (百度文心 | 1168点数解答 | 2026-01-12 21:02:27)53