题意:给出一个多项式$(by+ax)^k$,求$x^n*y^m$项的系数
思路:举例:k=3的情况
$(ax+by)^3=a^3x^3+3a^2bx^2y+3ab^2xy^2+b^3y^3$
可以发现,a,b的次幂情况与x,y完全相同
根据组合数的系数
可以预处理杨辉三角求出本来的系数
用快速幂求a,b的次幂
相乘即可
注意题中为$(by+ax)^k$
#include<cstdio> #include<iostream> #include<cstring> #include<cctype> #include<algorithm> using namespace std; #define int long long #define olinr return #define _ 0 #define love_nmr 0 #define DB double #define mod 10007 inline int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) { if(ch=='-') f=-f; ch=getchar(); } while(isdigit(ch)) { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f; } inline void put(int x) { if(x<0) { x=-x; putchar('-'); } if(x>9) put(x/10); putchar(x%10+'0'); } int a; int b; int k; int n; int m; int yh[1050][1050]; inline int ksm(int x,int y) { int re=1LL; while(y) { if(y&1) re=re*x%mod; x=x*x%mod; y>>=1; } return re; } signed main() { a=read(); b=read(); k=read(); n=read(); m=read(); yh[0][0]=1; for(int i=1;i<=1000;i++) for(int j=0;j<=i;j++) { if(j==0) { yh[i][j]=1; continue; } yh[i][j]=(yh[i-1][j]+yh[i-1][j-1])%mod; } int aa=ksm(a,n)%mod; int bb=ksm(b,m)%mod; put(((aa*bb)%mod*yh[k][(k-m)])%mod); olinr ~~(0^_^0)+love_nmr; }