QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#18636 | #2329. Greenberg Mass Comparison | DoorKickers | AC ✓ | 2ms | 3708kb | C++20 | 1.0kb | 2022-01-22 19:44:53 | 2022-05-06 01:56:47 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
signed main() {
auto fp = [&](int a, int n, int mod) {
int res = 1;
while (n) {if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1;}
return res;
};
auto inv = [&](int x) {
return fp(x, mod - 2, mod);
};
int tt; cin >> tt;
while (tt--) {
int n; cin >> n;
vector<int> jc(n + 5), invv(n + 5);
jc[0] = 1;
invv[0] = 1;
for (int i = 1; i <= n; i++) {
jc[i] = jc[i - 1] * i % mod;
invv[i] = inv(jc[i]);
}
vector<int> B(n + 5);
B[0] = 1;
auto C = [&](int big, int sml) {
return jc[big] * invv[sml] % mod * invv[big - sml] % mod;
};
for (int i = 1; i <= n; i++) {
for (int k = 0; k < i; k++) {
B[i] = (C(i - 1, k) * B[k] % mod + B[i] % mod) % mod;
}
}
cout << B[n] << '\n';
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 3708kb
input:
100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
output:
1 2 5 15 52 203 877 4140 21147 115975 678570 4213597 27644437 190899322 382958538 480142077 864869230 76801385 742164233 157873304 812832668 706900318 546020311 173093227 759867260 200033042 40680577 159122123 665114805 272358185 365885605 744733441 692873095 463056339 828412002 817756178 366396447 ...
result:
ok 100 lines