HDU5894【组合数学】
来源:互联网 发布:网络直播平台土豪排名 编辑:程序博客网 时间:2024/06/06 02:58
题意:
现在 m个考生人需要坐在有n个座位的圆桌上。
你需要安排位置,使得任意两个考生之间相距至少k个位置。
桌子有编号,考生a和b交换位置视作一种方案,问有多少方案,mod 1e9+7。
(0 < m < n < 1e6, 0 < k < 1000)
看网上的= =、真心菜啊;
思路:
先确定一个人的位置,然后其余人的方案得出,然后有n个位置,最后除以重复的/m;
#include <bits/stdc++.h>using namespace std;typedef long long LL;const LL mod=1e9+7;const int N=1e6+10;LL f[N];void init(){ f[1]=1; LL i; for(i=2;i<=1000000;i++) f[i]=f[i-1]*i%mod;}LL cal(LL g,LL x){ LL ans=1; while(g) { if(g&1) ans=(ans*x)%mod; x=(x*x)%mod; g>>=1; } return ans;}LL C(LL n,LL m){ if(m>n) return 0; LL ans=1; LL i;// for(i=1; i<=m; i++) {// ans=ans*((n+i-m)*cal(mod-2,i)%mod)%mod;// } ans=f[n]*cal(mod-2,f[m])%mod*cal(mod-2,f[n-m])%mod; return ans;}int main(){ LL n,m,k; int t; init(); scanf("%d",&t); while(t--) { scanf("%lld%lld%lld",&n,&m,&k); if(m==1) { printf("%lld\n",n); continue; } printf("%lld\n",n*C(n-1-k*m,m-1)%mod*cal(mod-2,m)%mod); } return 0;}
0 0
- hdu5894组合数学
- HDU5894【组合数学】
- 组合数学-HDU5894
- HDU5894-hannnnah_j’s Biological Test【组合数学】
- HDU5894-hannnnah_j’s Biological Test(组合数学+Lucas定理)
- hdu5894 hannnnah_j’s Biological Test(组合数学)
- hdu5894 hannnnah_j’s Biological Test(2016 acm/icpc 沈阳网络赛,组合数学)
- hdu5894 hannnnah_j’s Biological Test(数学)
- HDU5894分位置(组合数,lucas,乘法逆元)
- 组合数学
- 组合数学
- 组合数学
- 组合数学
- 组合数学
- 组合数学
- 组合数学
- 组合数学
- 组合数学
- 稀疏表示
- android studio中requestWindowFeature(Window.FEATURE_NO_TITLE)隐藏标题栏失效的解决方案
- 判断一个数组是不是二叉搜索树的后序遍历序列——剑指offer
- 通知和广播
- GATHER:基因注释工具
- HDU5894【组合数学】
- Tmux 快捷键
- 过滤器与拦截器
- 使用sqlyog导入数据表到MySql中
- Bracket Matching(Data structure)
- Spark2.0 Structured Streaming
- verilog中读写文件操作
- 【xxnet】xxnet使用总结
- 拓展欧几里得模板