emmmm这也算tg历年来比较简单的数论题了,相信大家经过小学初中高中的学习,已经明白了当这题a=b=1时,解题关键在于杨辉三角,那么再此基础上,通过在草稿纸上的演算,可以推得本题规律,下面上代码
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #define ll long long 7 using namespace std; 8 const int oo=0x3f3f3f3f; 9 const int mod=10007; 10 const int N=1005; 11 12 ll a,b,k,n,m,ans,an=1; 13 ll f[N][N]; 14 15 int Max(int a,int b){return a>b?a:b;}//貌似本题没什么用。。 16 int Min(int a,int b){return a<b?a:b;} 17 18 ll get(){//快读 19 char zy=getchar(); 20 ll z=1,y=0; 21 while(zy>'9'||zy<'0'){ 22 if(zy=='-') z=-1; 23 zy=getchar(); 24 } 25 while(zy>='0'&&zy<='9'){ 26 y=(y<<1)+(y<<3)+zy-'0'; 27 zy=getchar(); 28 } 29 return z*y; 30 } 31 32 int main(){ 33 a=get();b=get();k=get()+1;n=get();m=get(); 34 f[1][1]=f[2][1]=f[2][2]=1;//杨辉三角预处理 35 for(int i=3;i<=k;i++){//求杨辉三角各值 36 f[i][1]=f[i][i]=1; 37 for(int j=2;j<=i;j++){ 38 f[i][j]=(f[i-1][j-1]%mod+f[i-1][j]%mod)%mod; 39 } 40 } 41 ans=f[k][k-n]%mod; 42 for(int i=1;i<=n;i++){//a的n次幂 43 an*=a; 44 an%=mod; 45 } 46 ans=(ans*an)%mod; 47 an=1; 48 for(int i=1;i<=m;i++){//b的m次幂 49 an*=b; 50 an%=mod; 51 } 52 printf("%lld ",(ans*an)%mod); 53 return 0; 54 }
嗯那就是酱紫喽