P1313 计算系数

超级题目连接

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\n",(ans*an)%mod);
53     return 0;
54 }

嗯那就是酱紫喽

posted @ 2019-08-15 15:39  喵呜,颜儿ღ  阅读(100)  评论(0编辑  收藏  举报