zoukankan      html  css  js  c++  java
  • 计算系数

    题目链接

    题意:给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m项的系数。

    思路:系数是 C(n,k)*a^n*b^m

    a^n和b^m用快速幂求,然后求组合数有两种思路。

    因为k只有1000,所以杨辉三角打表

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include<map>
    #include<queue>
    #include<vector>
    #include<string>
    #define ll long long
    using namespace std;
    const int mod=10007;
    ll c[1011][1011];
    ll power(ll a,ll b)
    {
        ll c=1;
        for(;b;b>>=1)
        {
            if(b&1)
            c=(ll)c*a%mod;
            a=(ll)a*a%mod;
        }
        return c%mod;
    }
    int main()
    {
        ll n,m,k,a,b;
        for(int i=0;i<=1000;i++)
        {
            c[i][0]=1;
        }
        c[1][1]=1;
        for(int i=2;i<=1000;i++)
        {
            for(int j=1;j<=i;j++)
            {
                c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
            }
        }
        while(~scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m))
        {
            ll m1=power(a,n);
            ll m2=power(b,m);
            ll m=m1*m2%mod;
            ll ans=m*c[k][n]%mod;
            printf("%lld
    ",c[k][n]);
            printf("%lld
    ",ans);
        }
    }

    然后如果k比较大,就可以用求n!逆元的方法

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include<map>
    #include<queue>
    #include<vector>
    #include<string>
    #define ll long long
    using namespace std;
    const int mod=10007;
    ll jc[10010];
    ll jc_inv[10010];
    ll power(ll a,ll b)
    {
        ll c=1;
        for(;b;b>>=1)
        {
            if(b&1)
            c=(ll)c*a%mod;
            a=(ll)a*a%mod;
        }
        return c%mod;
    }
    int main()
    {
        jc[0]=1;
        for(int i=1;i<=1000;i++)
        {
            jc[i]=(jc[i-1]*i)%mod;
        }
        jc_inv[1000]=power(jc[1000],mod-2)%mod;
        for(int i=999;i>=0;i--)
        {
            jc_inv[i]=(jc_inv[i+1]*(i+1))%mod;
        //    jc_inv[i]=power(jc[i],mod-2)%mod;
        }
        ll a,b,k,n,m;
        while(~scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m))
        {
            ll m1=power(a,n);
            ll m2=power(b,m);
            ll p=m1*m2%mod;
            ll c=((jc[k]*jc_inv[n])%mod)*jc_inv[m]%mod;
            //printf("%lld
    ",c);
            ll ans=c*p%mod;
            printf("%lld
    ",ans);
        }
     } 
  • 相关阅读:
    mysql关联查询
    MySQL数据库面试题(转发来自https://thinkwon.blog.csdn.net/article/details/104778621)
    iview + vue + thinphp5.1 源码
    <!--标签嵌套规则-->
    PHP的基本变量检测方法
    PHP的八种变量
    php变量命名规范
    C++11新特性-常用
    算法设计-DP常见问题及解题技巧
    Web开发-概述
  • 原文地址:https://www.cnblogs.com/2462478392Lee/p/11328938.html
Copyright © 2011-2022 走看看