91742024-02-16 20:35:32111Séta Alatti Területcpp17Hibás válasz 0/100222ms67020 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);
	ans *= inv_mod(P);
	ans %= MOD;
	cout << ans << '\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1960 KiB
2Elfogadva3ms2084 KiB
subtask20/16
3Hibás válasz3ms2296 KiB
4Hibás válasz3ms2532 KiB
5Hibás válasz3ms2672 KiB
6Hibás válasz3ms2644 KiB
7Hibás válasz3ms2908 KiB
8Hibás válasz3ms2856 KiB
9Elfogadva2ms2740 KiB
10Hibás válasz3ms2876 KiB
11Hibás válasz3ms2952 KiB
12Hibás válasz3ms3092 KiB
13Hibás válasz3ms3096 KiB
subtask30/21
14Hibás válasz3ms3208 KiB
15Hibás válasz2ms3116 KiB
16Hibás válasz3ms3124 KiB
17Hibás válasz3ms3136 KiB
18Hibás válasz3ms3140 KiB
19Hibás válasz3ms3424 KiB
20Hibás válasz3ms3408 KiB
21Hibás válasz3ms3420 KiB
22Hibás válasz3ms3420 KiB
subtask40/25
23Elfogadva24ms9968 KiB
24Hibás válasz209ms52472 KiB
25Elfogadva209ms52724 KiB
26Hibás válasz25ms10312 KiB
27Hibás válasz209ms52856 KiB
28Hibás válasz209ms52656 KiB
subtask50/38
29Hibás válasz202ms43840 KiB
30Hibás válasz202ms43844 KiB
31Hibás válasz221ms66836 KiB
32Hibás válasz221ms66844 KiB
33Hibás válasz221ms66844 KiB
34Hibás válasz221ms66916 KiB
35Hibás válasz221ms67020 KiB
36Hibás válasz221ms66892 KiB
37Hibás válasz222ms66896 KiB