QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#348118 | #8339. Rooted Tree | ucup-team1191# | AC ✓ | 1176ms | 3736kb | C++20 | 2.6kb | 2024-03-09 17:01:53 | 2024-03-09 17:01:54 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define TIME (clock() * 1.0 / CLOCKS_PER_SEC)
const int MOD = 1'000'000'009;
using ull = unsigned long long;
template <int MD>
struct ModInt {
using M = ModInt;
// static int MD;
int v;
ModInt(ll _v = 0) { set_v(int(_v % MD + MD)); }
inline M& set_v(int _v) {
v = (_v < MD) ? _v : _v - MD;
return *this;
}
inline explicit operator bool() const { return v != 0; }
inline M operator-() const { return M() - *this; }
inline M operator+(const M& r) const { return M().set_v(v + r.v); }
inline M operator-(const M& r) const { return M().set_v(v + MD - r.v); }
inline M operator*(const M& r) const { return M().set_v(int((ull)v * r.v % MD)); }
inline M operator/(const M& r) const { return *this * r.inv(); }
inline M& operator+=(const M& r) { return *this = *this + r; }
inline M& operator-=(const M& r) { return *this = *this - r; }
inline M& operator*=(const M& r) { return *this = *this * r; }
inline M& operator/=(const M& r) { return *this = *this / r; }
inline bool operator==(const M& r) const { return v == r.v; }
inline bool operator!=(const M& r) const { return v != r.v; }
inline M inv() const;
inline friend istream& operator>>(istream& is, M& r) { ll x; is >> x; r = M(x); return is; }
inline friend ostream& operator<<(ostream& os, const M& r) { return os << r.v; }
};
template<int MD>
ModInt<MD> pow(ModInt<MD> x, ll n) {
//ModInt pow(ModInt x, ll n) {
ModInt<MD> r = 1;
//ModInt r = 1;
while (n) {
if (n & 1) r *= x;
x *= x;
n >>= 1;
}
return r;
}
template<int MD>
ModInt<MD> ModInt<MD>::inv() const { return pow(*this, MD - 2); }
//ModInt ModInt::inv() const { return pow(*this, MD - 2); }
// if MD is from input
// this line is necessary, read later as you wish
//int ModInt::MD;
using Mint = ModInt<MOD>;
//using Mint = ModInt;
void solve() {
int m, k;
cin >> m >> k;
Mint exp_sum = 0;
Mint exp_ans = 0;
for (int i = 0; i < k; i++) {
int cnt = i * (m - 1) + 1;
Mint avg_deg = exp_sum * Mint(cnt).inv();
exp_sum += avg_deg * (m - 1) + m;
exp_ans += (avg_deg + 1) * m;
}
cout << exp_ans << "\n";
}
int main() {
#ifdef ONPC
freopen("input", "r", stdin);
#endif
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
//cin >> t;
while (t--) {
solve();
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3608kb
input:
6 2
output:
18
result:
ok 1 number(s): "18"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3684kb
input:
2 6
output:
600000038
result:
ok 1 number(s): "600000038"
Test #3:
score: 0
Accepted
time: 73ms
memory: 3668kb
input:
83 613210
output:
424200026
result:
ok 1 number(s): "424200026"
Test #4:
score: 0
Accepted
time: 790ms
memory: 3736kb
input:
48 6713156
output:
198541581
result:
ok 1 number(s): "198541581"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
1 111
output:
6216
result:
ok 1 number(s): "6216"
Test #6:
score: 0
Accepted
time: 856ms
memory: 3604kb
input:
28 7304152
output:
457266679
result:
ok 1 number(s): "457266679"
Test #7:
score: 0
Accepted
time: 483ms
memory: 3664kb
input:
38 4101162
output:
232117382
result:
ok 1 number(s): "232117382"
Test #8:
score: 0
Accepted
time: 1167ms
memory: 3688kb
input:
51 9921154
output:
340670552
result:
ok 1 number(s): "340670552"
Test #9:
score: 0
Accepted
time: 212ms
memory: 3612kb
input:
79 1801157
output:
620550406
result:
ok 1 number(s): "620550406"
Test #10:
score: 0
Accepted
time: 637ms
memory: 3696kb
input:
22 5417157
output:
457449071
result:
ok 1 number(s): "457449071"
Test #11:
score: 0
Accepted
time: 378ms
memory: 3672kb
input:
25 3210162
output:
36368303
result:
ok 1 number(s): "36368303"
Test #12:
score: 0
Accepted
time: 344ms
memory: 3608kb
input:
67 2919160
output:
935195555
result:
ok 1 number(s): "935195555"
Test #13:
score: 0
Accepted
time: 1013ms
memory: 3676kb
input:
77 8613163
output:
482832472
result:
ok 1 number(s): "482832472"
Test #14:
score: 0
Accepted
time: 1176ms
memory: 3736kb
input:
90 10000000
output:
275581651
result:
ok 1 number(s): "275581651"
Test #15:
score: 0
Accepted
time: 1174ms
memory: 3664kb
input:
99 9999999
output:
126087169
result:
ok 1 number(s): "126087169"
Test #16:
score: 0
Accepted
time: 1176ms
memory: 3736kb
input:
100 10000000
output:
451590067
result:
ok 1 number(s): "451590067"
Extra Test:
score: 0
Extra Test Passed