[fzu 2282]置换不动点大于等于k的排列数
2024-08-28 07:17:26
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2282
编号1~n的置换,不动点个数大于等于k的方案数。
参考百度百科错排公式,可以知道长度为n,每个数都不在自己位置的方案数。然后枚举长度即可。
考虑对立面(即小于k个在自己位置的)可以优化空间。
#include<cstdio>
#include<algorithm>
using namespace std; const int maxn=;
const int md=;
int D[maxn];
int C[maxn][];
int F[maxn]; int main()
{
D[]=;
D[]=;
D[]=;
for (int i=;i<=;i++)
{
D[i]=1ll*(i-)*(0ll+D[i-]+D[i-])%md;
}
C[][]=;
for (int i=;i<=;i++)
{
C[i][]=;
for (int j=;j<=min(,i);j++)
{
C[i][j]=(C[i-][j-]+C[i-][j])%md;
}
}
F[]=;
for (int i=;i<=;i++)
{
F[i]=1ll*F[i-]*i%md;
}
int t;
scanf("%d",&t);
while (t--)
{
int n,k;
scanf("%d%d",&n,&k);
int ans=F[n];
for (int i=;i<k;i++)
{
ans=(ans-1ll*C[n][i]*D[n-i]%md+md)%md;
}
printf("%d\n",ans);
}
return ;
}
最新文章
- android初级篇之apk签名key keystore格式转pk8+x509.pem
- bootstrap 实战入门教程(一)
- android scrollview 实现上下左右滚动方法
- ";本地泛解析";或者叫做”域名劫持泛解析“,做开发二级域名在内网测试
- Windows下安装Ruby
- Android 自定义NumProgressBar
- HDOJ 2097
- splunk rest api search
- 在linux下安装Mongodb
- 编译器手工开栈(hdu可以其他可以尝试)
- java 代码如何生成 chm
- uri中为什么本地文件file后面跟三个斜杠, http等协议跟两个斜杠?
- 【WS-Federation】到底有多少公司在用WS-Federation
- SVN安装手册
- UberX及以上级别车奖励政策(优步北京第一组)
- centos 5.3 安装(samba 3.4.4)
- Jet.com
- np.unravel_index
- Ubuntu 中使用git 上传代码
- Hystrix 容错处理