标签:qpow ch int ll 系数 计算 ans mod
给定一个多项式(ax+by)^k,请求出多项式展开后x^ny^m项的系数。
输入格式
共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开。
输出格式
输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。
数据范围
0≤n,m≤k≤1000
n+m=k,
0≤a,b≤1^6
输入样例:
1 1 3 1 2
输出样例:
3
// C[k][n]*a^n*b^m
#include<bits/stdc++.h> using namespace std; typedef long long ll; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } #define pi 3.14159265358979323846 const int INF=0x3f3f3f3f; const int mod=10007; const int maxn=1e6+100; const int maxa=521; int a,b,k,n,m; ll f[maxn]; ll qpow(ll a,ll b){ ll ans=1; while(b){ if(b&1){ ans=(ans*a)%mod; } b>>=1; a=(a*a)%mod; } return ans; } // C[k][n]*a^n*b^m ll cal(ll n,ll m){//c(n,m) if(m>n){ return 0; } else{ return (f[n]*(qpow(f[n-m],mod-2)%mod)*(qpow(f[m],mod-2)%mod))%mod; } } int main(){ f[0]=1; for(int i=1;i<=1e5;i++){ f[i]=(f[i-1]*i)%mod; } printf("%lld\n",qpow(2,3)); printf("%lld",cal(6,3)); cin>>a>>b>>k>>n>>m; ll ans=(((cal(k,n)*qpow(a,n))%mod)*qpow(b,m)%mod)%mod; printf("%lld",ans); }
标签:qpow,ch,int,ll,系数,计算,ans,mod 来源: https://www.cnblogs.com/lipu123/p/13041765.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。