UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#214791#2161. 小L的栈ThySecret100507ms32416kbC++112.0kb2024-11-21 20:54:292024-11-22 09:35:12

answer

#include <bits/stdc++.h>

using namespace std;

#define int long long
// #define x first
// #define y second
#define File(a) freopen(a".in", "r", stdin), freopen(a".out", "w", stdout)

inline void debug() { cerr << '\n'; }
template<typename Type, typename... Other>
inline void debug(const Type& x, const Other&... y) { cerr << x << ' '; debug(y...); }
#define DEBUG(a...) cerr << "[" << #a << "] = ", debug(a);

typedef long long LL;
typedef pair<int, int> PII;

const int N = 2000010;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;

template<typename Type>
inline void read(Type &res)
{
    res = 0;
    int ch = getchar(), flag = 0;
    while (!isdigit(ch)) flag |= ch == '-', ch = getchar();
    while (isdigit(ch)) res = (res << 3) + (res << 1) + (ch ^ 48), ch = getchar();
    res = flag ? -res : res;
}
template<typename Type, typename... Other>
inline void read(Type &res, Other&... y) { read(res), read(y...); }

int n, m, k;
int fc[N], inv[N];

inline int ksm(int base, int k)
{
    int res = 1;
    while (k)
    {

        if (k & 1) res = res * base % mod;
        base = base * base % mod, k >>= 1;
    }
    return res;
}

inline int C(int m, int n) { return m < n ? 0 : fc[m] * inv[n] % mod * inv[m - n] % mod; }

void solve()
{
    read(n, m, k);
    if (k > m) return puts("0"), void();
    // int ans = C(m - 1, m - k) * C(2 * (m - k), m - k) % mod * ksm(m - k + 1, mod - 2) % mod;
    int ans = (C(m - 1 + m - k, m - k) - C(m - 1 + m - k, m - k - 1) + mod) % mod;

    // int res = (C(n - m - 1 + k, k) - C(n - m - 1 + k, k - 1) + mod) % mod;
    int res = (C(n - m + k + n - m, n - m) - C(n - m + k + n - m, n - m - 1) + mod) % mod;
    cout << ans * res % mod << '\n';
}

signed main()
{
    for (int i = fc[0] = 1; i < N; i ++) fc[i] = fc[i - 1] * i % mod;
    inv[N - 1] = ksm(fc[N - 1], mod - 2);
    for (int i = N - 2; i >= 0; i --) inv[i] = inv[i + 1] * (i + 1) % mod;

    int T; read(T);
    while (T --) solve();

    return 0;
}

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 5
Accepted
time: 36ms
memory: 32412kb

input:

100
26 20 10
26 24 9
13 2 2
21 13 4
29 7 5
22 19 13
12 1 1
26 1 1
24 20 2
17 15 15
3 1 1
24 14 17
25...

output:

514423014
112607261
534888
381817972
555144047
73489416
208012
352943583
53685987
152
5
0
946367425
...

result:

ok 100 lines

Test #2:

score: 5
Accepted
time: 20ms
memory: 32412kb

input:

100
13 6 3
12 6 3
14 14 13
24 15 9
8 6 5
4 3 1
4 3 2
18 12 7
23 11 5
24 20 14
14 7 3
27 21 17
31 17 ...

output:

198016
56056
13
366737601
135
4
6
39504192
967067366
715926750
636480
64591509
0
671918485
796107692...

result:

ok 100 lines

Test #3:

score: 5
Accepted
time: 24ms
memory: 32412kb

input:

100
31 18 12
11 3 1
27 9 9
7 6 2
21 15 6
16 2 1
18 11 12
22 17 5
15 6 1
10 8 10
23 22 6
28 5 6
23 4 ...

output:

661234655
9724
815886766
126
267452475
9694845
0
656127752
705432
0
581024202
0
78189099
2674440
1
4...

result:

ok 100 lines

Test #4:

score: 5
Accepted
time: 27ms
memory: 32412kb

input:

100
25 22 14
7 5 6
6 1 1
7 1 1
7 4 2
8 5 1
8 2 1
18 4 5
5 4 3
18 9 7
11 10 6
4 2 1
15 4 2
3 1 1
3 1 ...

output:

594796736
0
132
429
140
196
429
0
12
33649000
3003
5
2674440
5
5
858
24310
823378651
935508470
0
856...

result:

ok 100 lines

Test #5:

score: 5
Accepted
time: 27ms
memory: 32412kb

input:

100
29 20 6
4 4 2
6 5 3
13 9 8
5 4 4
10 5 5
30 9 11
12 12 5
8 8 4
29 5 1
16 7 2
28 8 6
3 1 1
11 11 1...

output:

763947475
5
36
10080
5
1638
0
13260
165
249143859
5542680
630775223
5
1
56
534529540
293930
27971953...

result:

ok 100 lines

Test #6:

score: 5
Accepted
time: 16ms
memory: 32416kb

input:

100
5 5 5
26 22 4
19 17 16
25 17 8
31 2 2
28 21 12
15 3 1
31 8 2
22 1 1
15 3 2
3 2 2
25 17 3
15 3 3
...

output:

1
957177681
2720
337431182
462027062
923233078
1485800
116294070
482563003
3863080
3
549208528
43459...

result:

ok 100 lines

Test #7:

score: 5
Accepted
time: 16ms
memory: 32416kb

input:

10
474 293 237
481 396 187
364 43 45
741 78 8
158 53 30
463 445 433
120 110 62
503 52 16
360 318 32
...

output:

323352985
63241071
0
222507962
478641805
854383331
893261429
747110781
699961226
252997894

result:

ok 10 lines

Test #8:

score: 5
Accepted
time: 24ms
memory: 32416kb

input:

10
641 326 203
15 3 2
153 20 25
288 240 91
499 105 31
732 581 299
994 253 153
352 106 28
62 13 10
93...

output:

919680035
3863080
0
724023677
581680580
794343262
840693979
288065703
184728173
158286453

result:

ok 10 lines

Test #9:

score: 5
Accepted
time: 21ms
memory: 32412kb

input:

10
543 141 147
663 293 26
45 31 12
69 18 22
348 49 36
37 5 4
767 411 318
421 193 84
965 44 46
398 30...

output:

0
536162423
542866247
0
356102686
284316141
577945523
655525950
0
0

result:

ok 10 lines

Test #10:

score: 5
Accepted
time: 24ms
memory: 32416kb

input:

10
999 387 390
189 157 55
324 281 150
954 62 8
514 147 89
331 236 171
150 46 15
979 216 59
682 175 1...

output:

0
657224842
866062375
612350269
797998629
965804890
33283886
370426989
0
753780884

result:

ok 10 lines

Test #11:

score: 5
Accepted
time: 19ms
memory: 32416kb

input:

10
284 110 71
343 327 228
890 627 348
756 63 8
919 31 5
542 69 21
109 15 6
424 252 155
899 5 1
192 1...

output:

939661935
7427866
845407531
565632090
584793981
721121700
999456680
490287152
790372676
0

result:

ok 10 lines

Test #12:

score: 5
Accepted
time: 28ms
memory: 32416kb

input:

10
957 341 186
433 199 51
760 510 73
406 179 137
739 207 230
74 43 43
881 518 106
118 100 29
724 475...

output:

475101795
640352890
452627676
917987052
0
220718056
847304648
569168532
840548600
367170930

result:

ok 10 lines

Test #13:

score: 5
Accepted
time: 42ms
memory: 32412kb

input:

10000
948520 153123 37633
978977 610707 430315
861510 89319 84311
89854 76753 23361
539648 26973 539...

output:

224882239
78243119
752768981
133670970
823837837
861202414
172458352
917749445
141351091
428891672
1...

result:

ok 10000 lines

Test #14:

score: 5
Accepted
time: 29ms
memory: 32412kb

input:

10000
776217 468283 394226
679502 396921 440333
336294 175951 21262
158362 85737 87647
786586 679022...

output:

593235084
0
693263768
0
239343520
75293794
855075166
448580350
971747286
415188727
0
453115359
16674...

result:

ok 10000 lines

Test #15:

score: 5
Accepted
time: 32ms
memory: 32416kb

input:

10000
727020 72982 84798
511326 476765 238661
768301 198556 241391
42904 770 3
225143 21785 19973
71...

output:

0
264209582
0
365827860
338776996
0
643364371
0
923750084
514419494
803184187
996127244
18795969
819...

result:

ok 10000 lines

Test #16:

score: 5
Accepted
time: 21ms
memory: 32412kb

input:

10000
349236 250424 6551
245300 155779 53345
718003 538775 455477
554195 3258 1970
864269 350613 163...

output:

614690665
48068909
961727825
116922077
937665053
545463810
159985171
40051945
163855553
525905370
75...

result:

ok 10000 lines

Test #17:

score: 5
Accepted
time: 12ms
memory: 32412kb

input:

10000
130797 50408 54584
589075 456571 10806
78159 33427 38224
303639 7008 8635
585821 448649 100079...

output:

0
862178676
0
0
647286860
488363651
887107171
45701820
505945040
171439785
533367105
321658620
28991...

result:

ok 10000 lines

Test #18:

score: 5
Accepted
time: 36ms
memory: 32412kb

input:

10000
693060 190134 160913
997339 460961 184242
899251 525330 137457
513519 345024 295373
352825 155...

output:

285831846
259325823
603184339
400765664
326888470
292981576
579043448
572924932
83311047
662899396
1...

result:

ok 10000 lines

Test #19:

score: 5
Accepted
time: 26ms
memory: 32412kb

input:

10000
933167 891532 704848
80961 67286 35337
240488 174845 21388
451269 212850 49163
948517 31409 36...

output:

31241498
734172905
515809396
744766113
0
934513159
814225104
928984552
459018579
830020604
141239706...

result:

ok 10000 lines

Test #20:

score: 5
Accepted
time: 27ms
memory: 32416kb

input:

10000
61939 9116 2096
150659 75224 41401
13674 12474 10722
152304 47286 14033
319787 185775 135285
8...

output:

494879849
236192375
710885048
18162371
183133441
806117830
287024099
378052720
899612100
538326070
7...

result:

ok 10000 lines