1 条题解
-
0
奖品分配(Prize Distribution) 题解
思路分析
按题目要求使用对应数据结构与算法模拟/递推求解,注意数据范围边界与时间复杂度。
参考代码
#include <iostream> #include <vector> using namespace std; const int MOD = 1000000007; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); vector<vector<int>> C(1005, vector<int>(1005, 0)); for (int i = 0; i <= 1002; ++i) { C[i][0] = 1; for (int j = 1; j <= i; ++j) { C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % MOD; } } int T; if (!(cin >> T)) return 0; while (T--) { int n, m; cin >> n >> m; vector<int> a(m); int sum = 0; for (int i = 0; i < m; ++i) { cin >> a[i]; sum += a[i]; } long long ans = 1; int rem = sum; for (int i = 0; i < m; ++i) { ans = ans * C[rem][a[i]] % MOD; rem -= a[i]; } cout << ans << "\n"; } return 0; }
- 1
信息
- ID
- 8615
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者