106852024-04-08 21:15:03111Faültetéscpp17Elfogadva 100/100250ms50640 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
subtask210/10
2Elfogadva3ms2024 KiB
3Elfogadva3ms2140 KiB
4Elfogadva3ms2344 KiB
subtask340/40
5Elfogadva3ms2572 KiB
6Elfogadva3ms2940 KiB
7Elfogadva3ms2904 KiB
8Elfogadva3ms3188 KiB
9Elfogadva3ms3424 KiB
10Elfogadva3ms3376 KiB
11Elfogadva3ms3404 KiB
subtask450/50
12Elfogadva32ms9340 KiB
13Elfogadva143ms44592 KiB
14Elfogadva218ms44724 KiB
15Elfogadva59ms14560 KiB
16Elfogadva209ms44668 KiB
17Elfogadva109ms23956 KiB
18Elfogadva98ms24108 KiB
19Elfogadva230ms46616 KiB
20Elfogadva94ms24188 KiB
21Elfogadva250ms50640 KiB