失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > CSUSTOJ 论演员的自我修养(组合数学)

CSUSTOJ 论演员的自我修养(组合数学)

时间:2020-12-04 16:10:44

相关推荐

CSUSTOJ 论演员的自我修养(组合数学)

题目链接http://acm./problem/1102

显然对于 1 ,y列不可取, 1,x行不可取。 先令x–,y-- 表示不取x行y列。只需要枚举当前需要多少步到达(x,y)即可。【1,x】步 ,那么对于可取的x,y范围内我们要取当前步数的组合数。

#include<bits/stdc++.h>#define fuck(x) std::cout<<"["<<#x<<"->"<<x<<"]"<<endl;using namespace std;typedef long long ll;const int M = 2e5 + 5;const int inf = 1e9 + 5;const int maxn = 1e5 + 5;ll Jc[maxn];ll a[maxn];ll mod = 1e9 + 7;void calJc(ll mod) {Jc[0] = Jc[1] = 1;for (ll i = 2; i < maxn; i++)Jc[i] = Jc[i - 1] * i % mod;}ll pow(ll a, ll n, ll p) {//快速幂ll ans = 1;while (n) {if (n & 1)ans = ans * a % p;a = a * a % p;n >>= 1;}return ans;}ll niYuan(ll a, ll b) {return pow(a, b - 2, b);}ll C(ll a, ll b, ll mod) {return Jc[a] * niYuan(Jc[b], mod) % mod* niYuan(Jc[a - b], mod) % mod;}int main() {calJc(mod);int n,x,y,m;scanf("%d%d%d%d",&n,&m,&x,&y);x--,y--;int mx=min(x,y);ll ans=0;while(mx>0) {int xx=x-mx,yy=y-mx;ans=(ans+C(mx+xx-1,mx-1,mod)%mod*C(mx+yy-1,mx-1,mod)%mod)%mod;mx--;}printf("%d\n",ans);}

如果觉得《CSUSTOJ 论演员的自我修养(组合数学)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。