2017福建省大学生程序设计竞赛--K题(错排,组合数学)
来源:互联网 发布:招远淘宝小镇 编辑:程序博客网 时间:2024/06/05 15:14
题目在这里就不贴了
题目大意:有n个人,打乱顺序后,要求至少有k个人能拿到到自己魔杖,问有几种排序方法?
解题思路:
典型的 错排+组合数学
一定要理清错排的思路才能看懂这道题代码,在计算中 组合数学的取模运算还要用到快速幂+费马小定理求逆元。
推荐学习错排的链接:点击打开链接
推荐学习快速幂的链接:点击打开链接
代码如下,细节见代码:
#include<iostream>using namespace std;const int maxn=1e4+5;const int mod=1e9+7;typedef long long ll;ll n,m;int T;ll fac[maxn],dp[maxn],inver[maxn];ll fastmod(ll a,ll b) //快速幂求 组合数逆元{ ll ans=1; //初始化基础数为 1 while(b) { if(b&1) ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans;}void initial() //初始化{ fac[0]=1; //初始化基础数为 1 for(ll i=1; i<maxn; i++) { fac[i]=(fac[i-1]*i)%mod; } inver[maxn-1]=fastmod(fac[maxn-1],mod-2); //除法计算化作求逆元 for(ll i=maxn-2; i>=0; i--) { inver[i]=(inver[i+1]*(i+1))%mod; //a的p-1次方的逆元是a的p-2次方 } dp[0]=1; //初始化基础数为 1 dp[1]=0; for(ll i=2; i<=maxn; i++) //递推关系 { dp[i]=(i-1)*(dp[i-1]+dp[i-2]); dp[i]%=mod; }}ll C(ll n,ll m) //组合数学公式{ return fac[n]*inver[m]%mod*inver[n-m]%mod;}int main(){ initial(); cin>>T; while(T--) { cin>>n>>m; ll ans=0; for(ll i=m; i<=n; i++) { ans+=C(n,i)*dp[n-i]%mod; //至少k个人拿到自己的魔杖 ans%=mod; } cout<<ans<<endl; } return 0;}
~step by step
阅读全文
0 0
- 2017福建省大学生程序设计竞赛--K题(错排,组合数学)
- 第八届福建省大学生程序设计竞赛 K.Wand【错排+组合数】
- 第八届福建省大学生程序设计竞赛-K Wand(错位+组合数)
- 第六届福建省大学生程序设计竞赛 Problem J RunningMan【数学】
- FZU2264,2265,2266 Card Game 系列 (数学,规律)(第七届福建省大学生程序设计竞赛)
- 2017第八届福建省大学生程序设计竞赛总结
- FZU2272+Frog+签到题+第八届福建省大学生程序设计竞赛
- 第六届福建省大学生程序设计竞赛(FZU2212—FZU2221)
- FZU2273Triangles+(三角形)+第八届福建省大学生程序设计竞赛
- 第六届福建省大学生程序设计竞赛(几道水题)
- 第四届福建省大学生程序设计竞赛
- 第六届福建省大学生程序设计竞赛
- 2016 第七届福建省大学生程序设计竞赛
- 第八届福建省大学生程序设计竞赛
- 第六届福建省大学生程序设计竞赛-重现赛,Problem B Common Tangents【数学几何】
- FZU2268 Cutting Game(数学,规律)(第七届福建省大学生程序设计竞赛)
- 第八届福建省大学生程序设计竞赛-重现赛(A+D+K+L)
- 山东省第五届ACM大学生程序设计竞赛-Hearthstone II(组合数学-第二类Stirling数)
- 缓存redis常用命令1
- mysql存储引擎
- 消息队列使用的四种场景介绍
- .NET使用IKVM调用小米推送教程
- android.content.res.Resources$NotFoundException: String resource ID #0x4 报找不到资源id情况
- 2017福建省大学生程序设计竞赛--K题(错排,组合数学)
- Class.getResourceAsStream()和Class.getClassLoader().getResourceAsStream()用法
- java连接MySQL数据库及实现基本的增查
- 阿里云服务器出错500
- GAN 的 keras 实现
- 非阻塞超时轮询
- Unity (二) Animator:Events
- std::lock的使用方法
- Java实现指定数据表导出生成Excel