UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#211716#2908. countLZDQ100603ms21960kbPython31005b2024-09-13 10:13:272024-09-13 10:13:28

answer

import sys
import threading

MOD = 10**9 + 7
MAX = 2 * (10**5) + 10

def main():
    import sys
    # sys.setrecursionlimit(1 << 25)
    T = int(sys.stdin.readline())
    factorial = [1] * MAX
    inv_factorial = [1] * MAX

    # Precompute factorials and inverse factorials
    for i in range(1, MAX):
        factorial[i] = factorial[i - 1] * i % MOD

    inv_factorial[MAX - 1] = pow(factorial[MAX - 1], MOD - 2, MOD)
    for i in range(MAX - 2, -1, -1):
        inv_factorial[i] = inv_factorial[i + 1] * (i + 1) % MOD

    def comb(n, k):
        if k < 0 or k > n:
            return 0
        return factorial[n] * inv_factorial[k] % MOD * inv_factorial[n - k] % MOD

    for _ in range(T):
        n_str, m_str = sys.stdin.readline().split()
        n = int(n_str)
        m = int(m_str)
        total_paths = comb(n + m - 2, n - 1)
        total_cost = total_paths * (n * m - 1) % MOD
        print(total_cost)

# threading.Thread(target=main).start()
main()


Details

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

Test #1:

score: 20
Accepted
time: 128ms
memory: 21944kb

input:

10
1 1
2000 1997
117 1647
392 452
959 1883
1046 1627
1398 1124
1372 306
1799 1007
111 1765

output:

0
57631948
737963048
807538931
137760374
398194748
77480423
174938019
583393917
445670336

result:

ok 10 lines

Test #2:

score: 20
Accepted
time: 130ms
memory: 21956kb

input:

10
1 1
2000 1997
1218 1479
350 1244
784 1715
999 92
396 1393
1726 1511
624 756
900 317

output:

0
57631948
610566455
356523655
593949258
665757514
349394180
73375269
50652564
663822508

result:

ok 10 lines

Test #3:

score: 20
Accepted
time: 113ms
memory: 21956kb

input:

10
1 1
100000 99997
36934 50467
5497 37576
83775 15544
23817 68917
33052 49207
59924 39340
2708 2614...

output:

0
73866797
788834869
539491921
582239610
497376436
343937059
324406513
13225836
35059446

result:

ok 10 lines

Test #4:

score: 20
Accepted
time: 112ms
memory: 21960kb

input:

10
1 1
100000 99997
6792 14252
90281 65716
46434 67120
18977 30384
16191 33996
3425 10433
31783 4263...

output:

0
73866797
609230597
213203975
638117274
527713366
525065128
867713025
174019248
375031322

result:

ok 10 lines

Test #5:

score: 20
Accepted
time: 120ms
memory: 21960kb

input:

10
1 1
100000 99994
47270 99792
93093 92620
88764 20724
48143 99711
33293 89038
2816 16811
97638 670...

output:

0
796648553
5720713
279796657
802039459
22848874
23038351
610731858
629891152
812026839

result:

ok 10 lines