QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#548350 | #8339. Rooted Tree | HTensor# | AC ✓ | 208ms | 315752kb | C++17 | 1.8kb | 2024-09-05 17:22:36 | 2024-09-05 17:22:36 |
Judging History
answer
#include <bits/stdc++.h>
#define dd(x) cout << #x << "\n"
#define d(x) cout << #x << ": " << x << "\n"
using namespace std;
#define int long long
using pii = pair<int, int>;
using vpii = vector<pii>;
using vi = vector<int>;
using vii = vector<vector<int>>;
using a3 = array<int, 3>;
const int inf = 0x3f3f3f3f3f3f3f3fLL;
const int mod = 1e9 + 9;
int qpow(int a, int b) {
int res = 1;
for (; b; b /= 2, a = a * a % mod) {
if (b & 1) {
res = res * a % mod;
}
}
return res;
}
int inv(int a) {
return qpow(a, mod - 2);
}
// 1-n的逆元
vector<int> linear_inv(int n) {
vector<int> iv(n + 1);
iv[1] = 1;
for (int i = 2; i <= n; i++) {
iv[i] = (mod - mod / i) * iv[mod % i] % mod;
}
return iv;
}
// 任意n个数的逆元
vector<int> linear_inv(const vector<int> &a) {
int n = a.size() - 1;
vector<int> iv(n + 1), s(n + 1), sv(n + 1);
s[0] = 1;
for (int i = 1; i <= n; i++) {
s[i] = s[i - 1] * a[i] % mod;
}
sv[n] = inv(s[n]);
for (int i = n; i >= 1; i--) {
sv[i - 1] = sv[i] * a[i] % mod;
}
for (int i = 1; i <= n; i++) {
iv[i] = sv[i] * s[i - 1] % mod;
}
return iv;
}
int positive(int x) {
return (x % mod + mod) % mod;
}
void solve() {
int m, k; cin >> m >> k;
vector<int> down(k + 1);
for(int i = 1; i <= k; i++) {
down[i] = i * m - i + 1;
}
down = linear_inv(down);
vector<int> v(k + 1), dp(k + 1);
for(int i = 1; i <= k; i++) {
v[i] = positive(v[i - 1] + m * down[i]);
dp[i] = positive(dp[i - 1] + m * (v[i - 1] + 1));
}
cout << dp[k] << "\n";
}
signed main() {
ios::sync_with_stdio(false); cin.tie(0);
int T = 1;
while(T--) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3560kb
input:
6 2
output:
18
result:
ok 1 number(s): "18"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
2 6
output:
600000038
result:
ok 1 number(s): "600000038"
Test #3:
score: 0
Accepted
time: 12ms
memory: 22288kb
input:
83 613210
output:
424200026
result:
ok 1 number(s): "424200026"
Test #4:
score: 0
Accepted
time: 141ms
memory: 212940kb
input:
48 6713156
output:
198541581
result:
ok 1 number(s): "198541581"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3632kb
input:
1 111
output:
6216
result:
ok 1 number(s): "6216"
Test #6:
score: 0
Accepted
time: 157ms
memory: 231264kb
input:
28 7304152
output:
457266679
result:
ok 1 number(s): "457266679"
Test #7:
score: 0
Accepted
time: 81ms
memory: 131424kb
input:
38 4101162
output:
232117382
result:
ok 1 number(s): "232117382"
Test #8:
score: 0
Accepted
time: 193ms
memory: 313096kb
input:
51 9921154
output:
340670552
result:
ok 1 number(s): "340670552"
Test #9:
score: 0
Accepted
time: 41ms
memory: 59652kb
input:
79 1801157
output:
620550406
result:
ok 1 number(s): "620550406"
Test #10:
score: 0
Accepted
time: 108ms
memory: 172476kb
input:
22 5417157
output:
457449071
result:
ok 1 number(s): "457449071"
Test #11:
score: 0
Accepted
time: 64ms
memory: 103504kb
input:
25 3210162
output:
36368303
result:
ok 1 number(s): "36368303"
Test #12:
score: 0
Accepted
time: 55ms
memory: 94392kb
input:
67 2919160
output:
935195555
result:
ok 1 number(s): "935195555"
Test #13:
score: 0
Accepted
time: 174ms
memory: 272292kb
input:
77 8613163
output:
482832472
result:
ok 1 number(s): "482832472"
Test #14:
score: 0
Accepted
time: 192ms
memory: 315752kb
input:
90 10000000
output:
275581651
result:
ok 1 number(s): "275581651"
Test #15:
score: 0
Accepted
time: 188ms
memory: 315576kb
input:
99 9999999
output:
126087169
result:
ok 1 number(s): "126087169"
Test #16:
score: 0
Accepted
time: 208ms
memory: 315684kb
input:
100 10000000
output:
451590067
result:
ok 1 number(s): "451590067"
Extra Test:
score: 0
Extra Test Passed