10685 2024. 04. 08 21:15:03 111 Faültetés cpp17 Elfogadva 100/100 250ms 50640 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

#define MOD 1000000007

int fac_mod(int x) {
	static vector<int> v = {1};
	while (v.size() - 1 < x) {
		v.push_back(v.back() * v.size() % MOD);
	}
	return v[x];
}

int pow_mod(int x, int p) {
	int r = 1;
	while (p > 0) {
		if (p % 2 == 1) {
			r *= x;
			r %= MOD;
		}
		p /= 2;
		x *= x;
		x %= MOD;
	}
	return r;
}

int inv_mod(int x) {
	return pow_mod(x, MOD - 2);
}

int inv_fac_mod(int x) {
	static vector<int> v = {1};
	while (v.size() - 1 < x) {
		v.push_back(inv_mod(fac_mod(v.size())));
	}
	return v[x];
}

int bin_mod(int n, int k) {
	if (k < 0 || k > n) {
		return 0;
	}
	return fac_mod(n) * inv_fac_mod(n - k) % MOD * inv_fac_mod(k) % MOD;
}

int cat_mod(int n) {
	return bin_mod(n * 2, n) * inv_fac_mod(n + 1) % MOD;
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
	cin>>N;
	int ans=0;
	for(int i=1;i<N;i++){
		int j=N-1-i;
		if(i>j){
			ans+=cat_mod(i)*fac_mod(i)%MOD*cat_mod(j)%MOD*fac_mod(j)%MOD;
			ans%=MOD;
		}
	}
	cout<<ans<<'\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1832 KiB
subtask2 10/10
2 Elfogadva 3ms 2024 KiB
3 Elfogadva 3ms 2140 KiB
4 Elfogadva 3ms 2344 KiB
subtask3 40/40
5 Elfogadva 3ms 2572 KiB
6 Elfogadva 3ms 2940 KiB
7 Elfogadva 3ms 2904 KiB
8 Elfogadva 3ms 3188 KiB
9 Elfogadva 3ms 3424 KiB
10 Elfogadva 3ms 3376 KiB
11 Elfogadva 3ms 3404 KiB
subtask4 50/50
12 Elfogadva 32ms 9340 KiB
13 Elfogadva 143ms 44592 KiB
14 Elfogadva 218ms 44724 KiB
15 Elfogadva 59ms 14560 KiB
16 Elfogadva 209ms 44668 KiB
17 Elfogadva 109ms 23956 KiB
18 Elfogadva 98ms 24108 KiB
19 Elfogadva 230ms 46616 KiB
20 Elfogadva 94ms 24188 KiB
21 Elfogadva 250ms 50640 KiB