博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1446 [HNOI2008]Cards
阅读量:7220 次
发布时间:2019-06-29

本文共 762 字,大约阅读时间需要 2 分钟。

还是有点没搞懂置换群这玩意儿……

根据题目的保证我们可以知道所有的洗牌构成了一个置换群,这个置换群的大小为\(m+1\)(包括原置换)
然后总的状态数为\(C(a+b+c,a)*C(b+c,c)*C(c,c)\),即\(\frac{(a+b+c)!}{a!b!c!}\)
然后感性理解一下发现对于只有原置换有不动点……
然后根据burnside引理答案就是\(\frac{(a+b+c)!}{a!b!c!(m+1)}\)

//minamoto#include
#define fp(i,a,b) for(register int i=a,I=b+1;i
I;--i)using namespace std;const int N=105;int a,b,c,m,p,fac[N],inv;int ksm(int a,int b){ int res=1; for(;b;b>>=1,a=1ll*a*a%p)if(b&1)res=1ll*res*a%p; return res;}int main(){// freopen("testdata.in","r",stdin); scanf("%d%d%d%d%d",&a,&b,&c,&m,&p); fac[0]=1;fp(i,1,N-2)fac[i]=1ll*fac[i-1]*i%p; inv=ksm(1ll*fac[a]*fac[b]%p*fac[c]%p*(m+1)%p,p-2); printf("%d\n",1ll*fac[a+b+c]*inv%p);}

转载于:https://www.cnblogs.com/bztMinamoto/p/10053774.html

你可能感兴趣的文章
iOS keychain注解
查看>>
二叉堆
查看>>
Dive into python
查看>>
学习STL-介绍一下STL
查看>>
程序人生系列之新闻发布系统 44-62
查看>>
Android应用开发提高系列(3)——《Effective Java 中文版》读书笔记
查看>>
TreeView对象选择某节点下所有节点与子节点
查看>>
The New Envjs Project The New Envjs Project
查看>>
潜移默化学会WPF(转载篇)--屏幕显示Label,鼠标移上去变成textBox
查看>>
如何获取元素最终使用的css值
查看>>
window.print ()
查看>>
Mysql索引优化
查看>>
施乐 著名的帕洛阿尔托研究中心
查看>>
在WordPress上不同位置添加广告位
查看>>
The best programmers are the quickest to Google
查看>>
[置顶] 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置
查看>>
【Android】Parse开发笔记(1)—— 准备
查看>>
问题描述符USB枚举错误 bus hound bad config desc
查看>>
UML基础概念
查看>>
【玩转Ubuntu】01. Ubuntu上配置JDK
查看>>