跟我 烨哥学了 一下 看了看它的代码
其实 和他的想法差不多
题目意思 比赛的时候想出来了
差在那个取模
还有 写的过程
欠练
inv 函数 就是题目的意思 我们 取消了 除法 直接 按照题目的那样 去写
这也是我比赛没ac的原因
由题目可知 这道题有n个黑球 m个白球 , 摸q次 摸到k个黑球的概率
我们可以知道 一个 数学公式 :
也就是我们高中数学学的 概率 选 多少
code 如下:
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 50;
const int mod = 1e9 + 7;
ll a[N];
ll n, m, k, q;
ll qmi(ll a, ll b) {
ll ans = 1;
while (b) {
if (b & 1)ans = (ans * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return ans;
}
ll inv(ll a, ll b) {
return (a * qmi(b, mod - 2)) % mod;
}
void solve()
{
cin >> n >> m >> k >> q;
if (k > n) {
cout << 0 << endl;
return;
}
ll ans1 = inv(a[n], a[n - k]) % mod;
ll ans2 = inv(a[n + m], a[n + m - k]) % mod;
ans1 = qmi(ans1, q) % mod;
ans2 = qmi(ans2, q) % mod;
ll ans = inv(ans1, ans2) % mod;
ans %= mod;
cout << ans << endl;
}
int main()
{
int t;
a[0] = 1;
for (int i = 1; i <= N - 1; i++) {
a[i] = a[i-1] * i;
a[i] %= mod;
}
cin >> t;
while (t--) {
solve();
}
}