• 洛谷 P1313 计算系数 解题报告


    P1313 计算系数

    题目描述

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

    输入输出格式

    输入格式:

    共一行,包含5个整数,分别为(a,b,k,n,m),每两个整数之间用一个空格隔开。

    输出格式:

    共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。


    思路:
    由二项式定理得,结果为(C_k^m*a^n*b^m mod 10007)

    因为10007是质数,所以我们可以用费马小定理求出阶乘逆元再直接求出(C_k^m)(a,b)则线性乘过去即可。


    Code:

    #include <cstdio>
    #define ll long long
    const ll mod=10007;
    ll inv[2],a,b,k,n,m,ans=1,fac=1;
    ll quick_pow(ll d,ll t)
    {
        ll f=1;
        while(t)
        {
            if(t&1)
                f=f*d%mod;
            d=d*d%mod;
            t>>=1;
        }
        return f;
    }
    void init()
    {
        scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m);
        inv[0]=inv[1]=1;
        for(int i=1;i<=n;i++)
        {
            inv[0]=inv[0]*i%mod;
            ans=ans*a%mod;
        }
        for(int i=1;i<=m;i++)
        {
            inv[1]=inv[1]*i%mod;
            ans=ans*b%mod;
        }
        for(int i=1;i<=k;i++)
            fac=fac*i%mod;
        inv[0]=quick_pow(inv[0],mod-2);
        inv[1]=quick_pow(inv[1],mod-2);
    }
    void work()
    {
        ans=ans*fac%mod*inv[0]*inv[1]%mod;
        printf("%lld
    ",ans);
    }
    int main()
    {
        init();
        work();
        return 0;
    }
    
    

    2018.7.4

  • 相关阅读:
    利用idea里面的mysql插件进行导入sql文件
    JSTL标签
    deepin20系统下配置JAVA开发环境
    deepin20安装及问题解决
    SpringBoot 在项目启之后执行自定义方法的两种方式
    Nick 的经验书
    Java 经验书
    SpringBoot 经验书
    Linux 经验书
    在MacOS中启动SSH服务
  • 原文地址:https://www.cnblogs.com/butterflydew/p/9262569.html
Copyright © 2020-2023  润新知