
BZOJ 1004 [HNOI2008]Cards
发布日期:2021-05-04 16:53:02
浏览次数:26
分类:精选文章
本文共 1178 字,大约阅读时间需要 3 分钟。
Description
小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红色,Sb张蓝色,Sg张绝色.他又询问有多少种方案,Sun想了一下,又给出了正确答案. 最后小春发明了M种不同的洗牌法,这里他又问Sun有多少种不同的染色方案.两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(即可以使用多种洗牌法,而每种方法可以使用多次)洗成另一种.Sun发现这个问题有点难度,决定交给你,答案可能很大,只要求出答案除以P的余数(P为质数).
Input
第一行输入 5 个整数:Sr,Sb,Sg,m,p(m<=60,m+1
Output
不同染法除以P的余数
Sample Input
1 1 1 2 7
2 3 1 3 1 2Sample Output
2
HINT
有2 种本质上不同的染色法RGB 和RBG,使用洗牌法231 一次可得GBR 和BGR,使用洗牌法312 一次 可得BRG和GRB。
100%数据满足 Max{Sr,Sb,Sg}<=20。Source
思路
显然:
ans=Csrn×Csbn−sr×Csgn−sr−sbm+1 a n s = C n s r × C n − s r s b × C n − s r − s b s g m + 1 继续化简可得 ans=Csrn×Csbn−srm+1 a n s = C n s r × C n − s r s b m + 1 求一下逆元和组合数就珂以啦。代码
#includeint sr,sb,sg,m,p,ans;inline int quickpow(int a,int b,int mo){ int res=1; while(b) { if(b&1) { res=res*a%mo; } a=a*a%mo; b>>=1; } return res;}inline long long c(int a,int b,int mo){ long long res=1; for(register int i=1; i<=b; ++i) { res=res*(a-i+1)/i; } res%=mo; return res;}int main(){ scanf("%d%d%d%d%d",&sr,&sb,&sg,&m,&p); ans=c(sr+sb+sg,sr,p)*c(sb+sg,sb,p)%p; printf("%d\n",ans*quickpow(m+1,p-2,p)%p); return 0;}
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月24日 06时49分04秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Cassandra数据建模
2019-03-06
Elasticsearch Web管理工具
2019-03-06
Git 配置SSH公钥、私钥
2019-03-06
在create-react-app创建的项目下允许函数绑定运算符
2019-03-06
博客园新闻频道开始公开测试
2019-03-06
评论表聚集索引引起的评论超时问题
2019-03-06
博客园上海俱乐部4月份活动通知邀请函已经发出!
2019-03-06
Internet Explorer 10 专题上线
2019-03-06
云计算之路-阿里云上:0:25~0:40网络存储故障造成网站不能正常访问
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
上周热点回顾(1.21-1.27)
2019-03-06
上周热点回顾(6.3-6.9)
2019-03-06
上周热点回顾(8.12-8.18)
2019-03-06
【故障公告】升级阿里云 RDS SQL Server 实例故障经过
2019-03-06
蹒跚来迟:新版博客后台上线公测
2019-03-06
上周热点回顾(9.16-9.22)
2019-03-06
上周热点回顾(11.4-11.10)
2019-03-06
[网站公告]11月26日00:00-04:00阿里云RDS升级
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
上周热点回顾(12.16-12.22)
2019-03-06