91752024-02-16 20:36:52111Séta Alatti Területcpp17Hibás válasz 0/100231ms67568 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

#define MOD 1000000007

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 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 inv_fac_mod(int x) {
	static vector<int> v = { 1 };
	while (v.size() - 1 < x) {
		v.push_back(v.back() * inv_mod(v.size()) % MOD);
	}
	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;
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
#ifdef CB
	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
#endif
	int N, M, P, R;
	cin >> N >> M >> P >> R;
	int r = N / P, c = M / P;
	int ans = bin_mod(N + M, N) - bin_mod(r + c, r) + MOD;
	ans %= MOD;
	ans *= inv_mod(P);
	ans %= MOD;
	cout << ans << '\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1824 KiB
2Elfogadva3ms2016 KiB
subtask20/16
3Hibás válasz3ms2232 KiB
4Hibás válasz3ms2464 KiB
5Hibás válasz3ms2652 KiB
6Hibás válasz2ms2740 KiB
7Hibás válasz3ms2864 KiB
8Hibás válasz2ms2956 KiB
9Elfogadva2ms3060 KiB
10Hibás válasz2ms2948 KiB
11Hibás válasz2ms2948 KiB
12Hibás válasz3ms3080 KiB
13Hibás válasz2ms3168 KiB
subtask30/21
14Hibás válasz2ms3164 KiB
15Hibás válasz2ms3264 KiB
16Hibás válasz3ms3392 KiB
17Hibás válasz3ms3272 KiB
18Hibás válasz2ms3280 KiB
19Hibás válasz3ms3404 KiB
20Hibás válasz3ms3280 KiB
21Hibás válasz2ms3272 KiB
22Hibás válasz2ms3276 KiB
subtask40/25
23Elfogadva24ms9820 KiB
24Hibás válasz209ms52320 KiB
25Elfogadva209ms52324 KiB
26Hibás válasz24ms9820 KiB
27Hibás válasz209ms52312 KiB
28Hibás válasz221ms52440 KiB
subtask50/38
29Hibás válasz209ms43704 KiB
30Hibás válasz203ms43692 KiB
31Hibás válasz231ms66812 KiB
32Hibás válasz231ms66952 KiB
33Hibás válasz222ms67044 KiB
34Hibás válasz223ms67112 KiB
35Hibás válasz221ms67116 KiB
36Hibás válasz231ms67320 KiB
37Hibás válasz224ms67568 KiB