【递推】【NOIP2011提高组】计算系数
来源:互联网 发布:为什么mac连接不上wifi 编辑:程序博客网 时间:2024/05/12 09:08
【问题描述】
由二项式定理可知(x+y)^n=C(n,1)*x^1*y^n+C(n,2)*x^2*y^(n-1)+…+C(1,n)*x^n*y+x^k+y^k。(其中x,y为实数,C(x,y)代表从有x个元素的集合中选择含有y个元素的组合的组合数。)
将上式中x,y换成ax,by,得到x^ny^m的系数是a^nb^m*C(k,n)。
C(k,n)可以用递推得到(当然也可以写数学公式,只是不好取模)。
设d[i][j]为C(i,j) d[i][j]=d[i-1][j-1]选+d[i-1][j]不选.
a^n,b^m直接二分快速幂就行了。(也可以暴力)
#include<cstdio>#include<iostream>#include<queue>#include<cstring>#include<cstdlib>#include<algorithm>#include<vector>#define mo 10007using namespace std;typedef long long LL;int a,b,k,n,m;int d[1005][1005];LL getckn(int k,int n){ memset(d,0,sizeof(d)); for(int i=0;i<=k;i++) d[i][0]=1; for(int i=1;i<=k;i++) for(int j=1;j<=n;j++) d[i][j]=(d[i-1][j]%mo+d[i-1][j-1]%mo)%mo; /*for(int i=1;i<=k;i++) { for(int j=1;j<=n;j++) printf("%d ",d[i][j]); printf("\n"); }*/ return d[k][n];}LL qkpw(int a,int b){ LL ans=1,t=a; while(b>0) { if(b&1)ans=ans*t%mo; t=t*t%mo; b=b>>1; } return ans;}int main(){ //freopen("my.in","r",stdin); //freopen("my.out","w",stdout); scanf("%d%d%d%d%d",&a,&b,&k,&n,&m); LL a1=getckn(k,n); LL a2=qkpw(a,n); LL a3=qkpw(b,m); LL ans=((a1%mo*a2%mo)*(a3%mo))%mo; cout<<ans<<endl; return 0;}
0 0
- 【递推】【NOIP2011提高组】计算系数
- noip2011提高组——计算系数
- rqnoj[NOIP2011提高组]计算系数
- 计算系数(NOIP2011提高组Day2T1)
- 【组合】NOIP2011计算系数
- noip2011 计算系数
- NOIP2011 计算系数
- NOIp2011 计算系数
- NOIP2011计算系数
- #NOIP2011#计算系数
- [Noip2011]计算系数
- 【Noip2011】计算系数
- NOIP2011计算系数详解
- NOIP2011复赛提高组day2(A:计算系数 B:聪明的质监员 C:观光公交)
- 【NOIP2011】洛谷1313 计算系数
- 【noip2011年提高组T2】 选择客栈 思路+灵感+递推
- NOIP2011 计算系数 题解(超详细)
- noip2011 计算系数 (幂方取模+组合数取模)
- NOI openjudge 8436:Saving Tang Monk
- JDBC六部曲
- Windows 7操作系统Git安装教程--学习总结
- VC中CEdit过滤输入字符与限制输入字符长度
- Android中Hook Instrumentation的一些思考
- 【递推】【NOIP2011提高组】计算系数
- 《JavaScript 闯关记》之初探
- hdu 5777 domino【贪心】
- Vim常用快捷键
- Python必备利器Anaconda
- TCP(2)
- 百练 开餐馆
- allwinner: add sun8i-emac driver
- Difference between Select Unique and Select Distinct