bzoj1004
来源:互联网 发布:最近网络疯传的名校 编辑:程序博客网 时间:2024/06/05 07:45
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
#include<bits/stdc++.h>using namespace std;int a[100005];int p;long long qpow(int a,int b){ long long res=1; while(b) { if(b&1) res=res*a%p; a=a*a%p; b>>=1; } return res;}long long comb(long long n,long long m){ if(m==0) return 1; return (a[n]*qpow(a[m],p-2)%p*qpow(a[n-m],p-2)%p)%p;}long long lucas(long long n,long long m){ if(m==0) return 1; return (comb(n%p,m%p)*lucas(n/p,m/p)%p);}int main(){ int m,aa,b,c; scanf("%d%d%d%d%d",&aa,&b,&c,&m,&p); long long t=1; long long ans=1; long long n=aa+b+c; a[1]=1; for(int i=2;i<=p;i++) { a[i]=a[i-1]*i%p; } ans=ans*lucas(n,aa)%p; ans=ans*lucas(n-aa,b)%p; ans=ans*qpow(m+1,p-2)%p; cout<<ans<<endl; return 0;}
阅读全文
0 0
- BZOJ1004
- bzoj1004
- bzoj1004
- 【BZOJ1004】Cards
- BZOJ1004 Cards
- BZOJ1004【HNOI2008】Cards
- bzoj1004【hnoi2008】Cards
- bzoj1004: [HNOI2008]Cards
- [BZOJ1004][HNOI2008]Cards
- 【BZOJ1004】【HNOI2008】Cards
- [dp+数论]bzoj1004
- BZOJ1004 [HNOI2008]Cards
- BZOJ1004: [HNOI2008]Cards
- BZOJ1004: [HNOI2008]Cards
- [bzoj1004][HNOI2008]Cards
- bzoj1004[HNOI2008] Cards
- 【HNOI2008】bzoj1004 Cards
- [Polya群论]BZOJ1004: [HNOI2008]Cards
- ubuntu下C++程序的编译和运行
- Java中的String
- POJ系列——java
- .net使用des方式加解密
- git 导出版本之间差异文件
- bzoj1004
- JavaMail创建邮件和发送邮件
- 10.12java
- 嵌入式linux内核启动过程简明描述
- EPOLL
- 一周小程序【资讯教程Demo】更新
- best-time-to-buy-and-sell-stock Java code
- python+selenium搜狗微信主页抓取
- AngularJS验证两次密码是否相同