计算系数
Posted 2462478392lee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算系数相关的知识,希望对你有一定的参考价值。
题意:给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m项的系数。
思路:系数是 C(n,k)*a^n*b^m
a^n和b^m用快速幂求,然后求组合数有两种思路。
因为k只有1000,所以杨辉三角打表
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<map> #include<queue> #include<vector> #include<string> #define ll long long using namespace std; const int mod=10007; ll c[1011][1011]; ll power(ll a,ll b) ll c=1; for(;b;b>>=1) if(b&1) c=(ll)c*a%mod; a=(ll)a*a%mod; return c%mod; int main() ll n,m,k,a,b; for(int i=0;i<=1000;i++) c[i][0]=1; c[1][1]=1; for(int i=2;i<=1000;i++) for(int j=1;j<=i;j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod; while(~scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m)) ll m1=power(a,n); ll m2=power(b,m); ll m=m1*m2%mod; ll ans=m*c[k][n]%mod; printf("%lld\n",c[k][n]); printf("%lld\n",ans);
然后如果k比较大,就可以用求n!逆元的方法
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<map> #include<queue> #include<vector> #include<string> #define ll long long using namespace std; const int mod=10007; ll jc[10010]; ll jc_inv[10010]; ll power(ll a,ll b) ll c=1; for(;b;b>>=1) if(b&1) c=(ll)c*a%mod; a=(ll)a*a%mod; return c%mod; int main() jc[0]=1; for(int i=1;i<=1000;i++) jc[i]=(jc[i-1]*i)%mod; jc_inv[1000]=power(jc[1000],mod-2)%mod; for(int i=999;i>=0;i--) jc_inv[i]=(jc_inv[i+1]*(i+1))%mod; // jc_inv[i]=power(jc[i],mod-2)%mod; ll a,b,k,n,m; while(~scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m)) ll m1=power(a,n); ll m2=power(b,m); ll p=m1*m2%mod; ll c=((jc[k]*jc_inv[n])%mod)*jc_inv[m]%mod; //printf("%lld\n",c); ll ans=c*p%mod; printf("%lld\n",ans);
以上是关于计算系数的主要内容,如果未能解决你的问题,请参考以下文章
R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数拟合回归模型使用两个回归模型的残差计算偏相关性系数