256302026-02-23 18:57:44GeneratrollJáték (50 pont)cpp17Elfogadva 50/509ms2896 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int b, c;
	cin >> b >> c;
	int m = 1000000007;
	int n = 2 * c - b - 2;
	vector<ll> f(n + 1);
	f[0] = 1;
	for (int i = 1; i <= n; i++) {
		f[i] = (f[i - 1] * i) % m;
	}
	ll u = f[n];
	ll v = m - 2;
	ll r = 1;
	while (v > 0) {
		if (v % 2 == 1) {
			r = (r * u) % m;
		}
		u = (u * u) % m;
		v /= 2;
	}
	vector<ll> g(n + 1);
	g[n] = r;
	for (int i = n - 1; i >= 0; i--) {
		g[i] = (g[i + 1] * (i + 1)) % m;
	}
	auto q = [&](int j, int k) {
		if (k < 0 || k > j) {
			return 0LL;
		}
		return f[j] * g[k] % m * g[j - k] % m;
	};
	ll x = q(n, c - 2);
	ll y = q(n, c - b - 2);
	ll z = (x - y + m) % m;
	cout << z << '\n';
	return 0;
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva2/21ms500 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms324 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/32ms756 KiB
13Elfogadva3/32ms564 KiB
14Elfogadva3/39ms2896 KiB
15Elfogadva3/34ms1452 KiB
16Elfogadva3/37ms2156 KiB
17Elfogadva3/36ms1844 KiB
18Elfogadva3/38ms2028 KiB
19Elfogadva3/38ms2200 KiB