首页 > 编程知识 正文

牛客网暑期acm训练赛

时间:2023-05-04 06:25:19 阅读:261657 作者:1542

比赛的时候不会写这个题,一直在找规律,可惜找不到。。。然后就放弃了这个题
今天补题看了题解又不是很懂,花了大半天的时间去理解叉姐的解题思路,终于理解了一点

#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=1e9+7;const int maxn=1000+100;ll f[maxn*2],inv[maxn*2];ll mypow(ll a,ll b){ll sum=1;while(b){if(b&1) sum=sum*a%mod;a=a*a%mod;b>>=1; }return sum;}void init(){f[0]=1;for(int i=1;i<maxn*2;i++) f[i]=f[i-1]*i%mod;inv[maxn*2-1]=mypow(f[maxn*2-1],mod-2);for(int i=maxn*2-2;i>=0;i--) inv[i]=inv[i+1]*(i+1)%mod;}inline ll C(int a,int b){if(a<b) return 0;return f[a]*inv[b]%mod*inv[a-b]%mod;}int main(){init();int n,m;while(scanf("%d%d",&n,&m)==2){ll tmp=(C(n+m,n)*C(n+m,n)%mod-C(n+m,n+1)*C(n+m,n-1)%mod+mod)%mod;printf("%lldn",tmp);}}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。