UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#165248#2908. countplatelet1007ms2420kbC++111.1kb2022-11-09 22:01:352022-11-09 22:01:36

answer

#include <bits/stdc++.h>
#define rep(i, l, r) for(int i = (l); i <= (r); i++)
#define per(i, r, l) for(int i = (r); i >= (l); i--)
#define mem(a, b) memset(a, b, sizeof a)
#define For(i, l, r) for(int i = (l), i##e = (r); i < i##e; i++)
#define pb push_back

using namespace std;
using u32 = uint32_t;
using u64 = uint64_t;
using ll = long long;

const int N = 1e5 + 8, M = 1e5, P = 1e9 + 7;

int n, m;
u32 fac[N << 1], ifac[N];

u64 Pow(u64 a, u64 n, u64 r = 1) {
    for(; n; n >>= 1, a = a * a % P)
        if(n & 1) r = r * a % P;
    return r;
}
inline u64 C(int n, int m) {
    return n >= 0 && m >= 0 ? (u64)fac[n + m] * ifac[n] % P * ifac[m] % P : 0;
}
int main() {
    cin.tie(0)->sync_with_stdio(0);
    fac[0] = 1;
    rep(i, 1, M << 1) fac[i] = (u64)fac[i - 1] * i % P;
    ifac[M] = Pow(fac[M], P - 2);
    per(i, M, 1) ifac[i - 1] = (u64)ifac[i] * i % P;
    int T, n, m;
    cin >> T;
    while(T--) {
        cin >> n >> m;
        cout << (m * (m + 1ULL) / 2 % P * (C(n - 1, m) - C(n - 1, m - 1) + P) + n * (n + 1ULL) / 2 % P * (C(n, m - 1) - C(n - 1, m - 1) + P)) % P << '\n';
    }
}

Details

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

Test #1:

score: 20
Accepted
time: 3ms
memory: 2416kb

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: 0ms
memory: 2420kb

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: 0ms
memory: 2416kb

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: 2ms
memory: 2416kb

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: 2ms
memory: 2416kb

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