P1313 计算系数

P1313 计算系数

所以可以将题目转化为求  C(k , m)*( ax ) ^ n * ( by ) ^ m 的系数  C(k , m)* a ^ n * b ^ m 

提示:

1.组合数和杨辉三角形元素一一对应   

   把杨辉三角形放入一个二维数组,C(n , m)对应第n行第m列元素

   注意起点为0行0列

 2.使用快速幂

 3.输入的各个数字先mod 10007 (为了计算准确)

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
int a,b,k,n,m;
int f[1005][1005];
int pow(int x,int y)
{
    int ret=1;
    while(y)
    {
      if(y%2==1)  ret=ret*x%10007;
      x=x*x%10007;
      y=y/2;    
    }
    return ret;
}
int main()
{
    cin>>a>>b>>k>>n>>m;
    a%=10007;b%=10007;k%=10007;n%=10007;m%=10007;
     
    f[0][0]=1;
    for(int i=1;i<=k;i++)
    {
        f[i][0]=1;
        for(int j=1;j<=i;j++)
        f[i][j]=(f[i-1][j]+f[i-1][j-1])%10007;
    }

    cout<<f[k][m]*pow(a,n)%10007*pow(b,m)%10007; 
       

       return 0;
} 
  
 

             

猜你喜欢

转载自www.cnblogs.com/xiaoyezi-wink/p/10639130.html