QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#808865#6137. Sub-cycle GraphKevin5307AC ✓122ms19292kbC++231.5kb2024-12-11 09:00:102024-12-11 09:00:11

Judging History

你现在查看的是最新测评结果

  • [2024-12-11 09:00:11]
  • 评测
  • 测评结果:AC
  • 用时:122ms
  • 内存:19292kb
  • [2024-12-11 09:00:10]
  • 提交

answer

//Author: Kevin
#include<bits/stdc++.h>
//#pragma GCC optimize("O2")
using namespace std;
#define ll long long
#define ull unsigned ll
#define pb emplace_back
#define mp make_pair
#define ALL(x) (x).begin(),(x).end()
#define rALL(x) (x).rbegin(),(x).rend()
#define srt(x) sort(ALL(x))
#define rev(x) reverse(ALL(x))
#define rsrt(x) sort(rALL(x))
#define sz(x) (int)(x.size())
#define inf 0x3f3f3f3f
#define pii pair<int,int>
#define lb(v,x) (int)(lower_bound(ALL(v),x)-v.begin())
#define ub(v,x) (int)(upper_bound(ALL(v),x)-v.begin())
#define uni(v) v.resize(unique(ALL(v))-v.begin())
#define longer __int128_t
void die(string S){puts(S.c_str());exit(0);}
const ll mod=1e9+7;
const ll inv2=(mod+1)/2;
ll fact[1001000],rfact[1001000];
ll C(int n,int k)
{
	if(n==k) return 1;
	if(k<0||k>n) return 0;
	return fact[n]*rfact[k]%mod*rfact[n-k]%mod;
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	fact[0]=rfact[1]=rfact[0]=1;
	for(int i=1;i<1001000;i++)
		fact[i]=fact[i-1]*i%mod;
	for(int i=2;i<1001000;i++)
		rfact[i]=(mod-mod/i)*rfact[mod%i]%mod;
	for(int i=2;i<1001000;i++)
		rfact[i]=rfact[i-1]*rfact[i]%mod;
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		ll k;
		cin>>n>>k;
		if(k>n)
			cout<<"0\n";
		else if(k==n)
			cout<<fact[n-1]*inv2%mod<<'\n';
		else
		{
			int c=n-k;
			ll ans=0;
			ll val=1;
			for(int i=0;i<=c;i++,val=val*inv2%mod)
				if(c+i<=n)
					ans=(ans+C(c,i)*val%mod*C(n-c-1,i-1))%mod;
			ans=ans*fact[n]%mod*rfact[c]%mod;
			cout<<ans<<'\n';
		}
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 11ms
memory: 19272kb

input:

3
4 2
4 3
5 3

output:

15
12
90

result:

ok 3 number(s): "15 12 90"

Test #2:

score: 0
Accepted
time: 122ms
memory: 19292kb

input:

17446
3 0
3 1
3 2
3 3
4 0
4 1
4 2
4 3
4 4
5 0
5 1
5 2
5 3
5 4
5 5
6 0
6 1
6 2
6 3
6 4
6 5
6 6
7 0
7 1
7 2
7 3
7 4
7 5
7 6
7 7
8 0
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 8
9 0
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 9
10 0
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
10 10
11 0
11 1
11 2
11 3
11 4
11 5
11 6
11 7
11...

output:

1
3
3
1
1
6
15
12
3
1
10
45
90
60
12
1
15
105
375
630
360
60
1
21
210
1155
3465
5040
2520
360
1
28
378
2940
13545
35280
45360
20160
2520
1
36
630
6552
42525
170100
393120
453600
181440
20160
1
45
990
13230
114345
643545
2286900
4762800
4989600
1814400
181440
1
55
1485
24750
273735
2047815
10239075
3...

result:

ok 17446 numbers