UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#165236#2908. countLittle0910063ms16784kbC++111018b2022-11-09 19:57:022022-11-09 19:57:04

answer

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
const int N=1000005;
int n,m;
inline int read()
{
	char C=getchar();
	int ANS=0,F=1;
	while (C<'0'||C>'9')
	{
		if (C=='-') F=-1;
		C=getchar();
	}
	while (C>='0'&&C<='9')
	{
		ANS=ANS*10+(C-'0');
		C=getchar();
	}
	return ANS*F;
}
ll jc[N],inv[N];
ll ksm(ll x,ll y)
{
	ll res=1;
	while (y)
	{
		if (y&1) res=res*x%mod;
		x=x*x%mod,y>>=1;
	}
	return res;
}
ll C(ll x,ll y)
{
	if (x<y||y<0) return 0;
	return jc[x]*inv[y]%mod*inv[x-y]%mod;
}
void init()
{
	jc[0]=1;
	for (int i=1;i<N;i++) jc[i]=jc[i-1]*i%mod;
	inv[N-1]=ksm(jc[N-1],mod-2);
	for (int i=N-2;i>=0;i--) inv[i]=inv[i+1]*(i+1)%mod;
}
void work()
{
	n=read(),m=read();
	ll tot=C(n+m-1-1,n-1),ans=tot*(m-1)%mod*n%mod;
	ans=(ans+tot*(n-1)%mod)%mod;
	cout << ans << endl;
}
int main()
{
	// freopen("count.in","r",stdin);
	// freopen("count.out","w",stdout);
	init();
	int T=read();
	while (T--) work();
	return 0;
}

Details

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

Test #1:

score: 20
Accepted
time: 20ms
memory: 16780kb

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: 16784kb

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: 12ms
memory: 16784kb

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: 15ms
memory: 16784kb

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: 16ms
memory: 16780kb

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