关注
#include<algorithm>
#include<cstdio>
#include<queue>
#include<cmath>
#include<cstring>
#include<iostream>
#include<ctime>
#include<cstdlib>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int maxn=10000005;
ll n,m,k;
ll ans;
ll q_pow(ll n,ll mi){
ll res=1,temp=n%mod;
while(mi){
if(mi&1) res=res*temp%mod;
temp=temp*temp%mod;
mi>>=1;
}
return res;
}
ll cal(ll n,ll m){ // Cm(n,m)=(n!/(n-m)!) * (m!)^(mod-2)) mod mod
if(m>n) return 0; // important
ll res=1;
for(int i=1;i<=m;i++){
ll t1=(n-m+i)%mod,t2=i%mod;
res=res*(t1*q_pow(t2,mod-2)%mod)%mod;
}
return res;
}
/*Lucas(n,m,mod)=Cm(n%mod,m%mod)* Lucas(n/mod,m/mod,mod)
Lucas(x,0,mod)=1;*/
ll lucas(ll t1,ll t2){
if(t2==0) return 1;
return cal(t1%mod,t2%mod)*lucas(t1/mod,t2/mod)%mod;
}
int main(){
// int t;
// scanf("%d",&t);
// while(t--){
// scanf("%lld",&n);
// cout<<lucas(n-1,n/2)<<endl;
// }
// scanf("%lld%lld",&n,&m);
cin>>n>>m>>k;
ll N0=lucas(n+m-1,n-1);
ll num=(n+m+1)/(k+1);
for(int i=1;i<=num;i++){
ans+=pow(-1,i+1)*lucas(n,i)*lucas((n+m-1)-(i*(k+1)),(n-1));
ans%=mod;
}
printf("%lld\n",N0-ans);//取模正确吗?
// cout<<lucas(25,5)-(lucas(6,1)*lucas(16,5))+(lucas(6,2)*lucas(7,5));
// printf("Time used= %.2f\n",(double)clock()/CLOCKS_PER_SEC);
// system("pause");
return 0;
}
查看原帖
点赞 9
相关推荐
点赞 评论 收藏
分享
06-19 22:53
江西应用科技学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你认为小厂实习有用吗? #
23143次浏览 263人参与
# 运营面经 #
116091次浏览 1254人参与
# 如果公司给你放一天假,你会怎么度过? #
15187次浏览 107人参与
# 秋招最大的收获是什么? #
36342次浏览 310人参与
# 硬件人秋招的第一个offer #
80447次浏览 1155人参与
# 三一重工求职进展汇总 #
13708次浏览 62人参与
# 硬件人,你被哪些公司给挂了 #
59343次浏览 827人参与
# 你的领导最像哪种动物,为什么? #
14781次浏览 107人参与
# 总结:哪家公司面试体验感最差 #
59784次浏览 268人参与
# 说说你知道的学历厂 #
44094次浏览 268人参与
# 材料人,你们签了哪个公司 #
7720次浏览 18人参与
# 实习生的蛐蛐区 #
60142次浏览 433人参与
# 如果重来一次你还会读研吗 #
176212次浏览 1780人参与
# 哪一瞬间觉得自己长大了 #
11371次浏览 249人参与
# 烟草笔面经互助 #
18017次浏览 184人参与
# 面试尴尬现场 #
35656次浏览 234人参与
# 计算机有哪些岗位值得去? #
18601次浏览 166人参与
# 你找工作的时候用AI吗? #
20590次浏览 249人参与
# 下班后的时间你怎么安排 #
11320次浏览 151人参与
# 电网笔面经互助 #
37189次浏览 359人参与