bzoj 2111: [ZJOI2010]Perm 排列计数
2024-08-31 11:32:08
神题。。。
扒自某神犇题解:
http://blog.csdn.net/aarongzk/article/details/50655471
#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline LL ra()
{
LL x=; char ch=getchar();
while (ch<'' || ch>'') ch=getchar();
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x;
} const int maxn=; LL n,mod,f[maxn],size[maxn];
LL fac[maxn],inv[maxn]; LL C(int n, int m)
{
if (n<m) return ;
if (n<mod && m<mod) return fac[n]*inv[m]%mod*inv[n-m]%mod;
return C(n/mod,m/mod)*C(n%mod,m%mod);
} int main()
{
n=ra(); mod=ra(); fac[]=;
for (int i=; i<=n; i++) fac[i]=fac[i-]*i%mod;
inv[]=inv[]=;
for (int i=; i<=n; i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
for (int i=; i<=n; i++) inv[i]=inv[i]*inv[i-]%mod;
for (int i=n; i>=; i--)
{
size[i]=size[i<<]+size[i<<|]+;
f[i]=((i<<)>n?:f[i<<])*((i<<|)>n?:f[i<<|])%mod*C(size[i]-,size[i<<])%mod;
}
cout<<f[]<<endl;
return ;
}
最新文章
- SpringBoot源码解析:tomcat启动分析
- 【Cocos2d-x for WP8 学习整理】(2)Cocos2d-Html5 游戏 《Fruit Attack》 WP8移植版 开源
- php 用户ip的获取
- 前端mvc框架backbone.js入门
- 转载:android.屏幕锁,解锁,在取证上的应用
- C语言redirection
- MIFARE系列3《卡能源和数据传递》
- 图形化管理debian服务
- Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)
- 两种写法实现Session Scope的Spring Bean
- C语言程序设计第五次作业--循环结构(1)
- 微服务领域是不是要变天了?Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器!
- Plugin/Preset files are not allowed to export objects,webpack报错/babel报错的解决方法
- 二、kubernetes环境搭建
- MGR主从不一致问题排查与修复
- vs2010 打包安装
- Eclipse中把Java工程修改成web工程
- 在CMD下启动vmware、Xshell连接虚拟机以及控制Chrome浏览器自动执行js登录校园网
- VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)
- 所以学树分块的时候为什么要看vector啊sjb