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

    题目描述

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

    输入输出格式

    输入格式:

     

    输入文件名为factor.in。

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

     

    输出格式:

     

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

     

    输入输出样例

    输入样例#1:
    1 1 3 1 2
    
    输出样例#1:
    3

    说明

    【数据范围】

    对于30% 的数据,有 0 ≤k ≤10 ;

    对于50% 的数据,有 a = 1,b = 1;

    对于100%的数据,有 0 ≤k ≤1,000,0≤n, m ≤k ,且n + m = k ,0 ≤a ,b ≤1,000,000。

    noip2011提高组day2第1题

    题解:

    杨辉三角求二项式系数

    二项式定理 (a+b)^n=sigema(r=0--n)C(n r)*a^(n-r)*b^r

    求x^n*y^m就是求 (a+b)^k的第(m+1)的系数,但是题目是(ax+by)^k,求x^n*y^m,就在原来杨辉三角求出的系数的基础上乘上a^n*b^m

    自己写几个公式推推就能发现。

    代码

    #include<iostream>
    #include<cstdio>
    #define mod 10007
    using namespace std;
    int a,b,k,n,m,c[1010][1010];
    long long mul(int x,int y){
        long long now=x,ans=1;
        while(y){
            if(y&1)ans=ans*now%mod;
            now=now*now%mod;
            y>>=1;
        }
        return ans;
    }
    int main(){
        scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
        c[0][0]=1;
        for(int i=1;i<=k;i++){
            for(int j=0;j<=i;j++){
                if(j==0)c[i][j]=1;
                else if(j==i)c[i][j]=1;else
                c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
            }
        }
        cout<<c[k][m]*mul(a,n)%mod*mul(b,m)%mod;
        return 0;
    }
  • 相关阅读:
    Spring 发生 has not been refreshed yet 异常
    rsyslog config
    grok
    阿里云态势
    Unity的asm笔记
    Unity2020或Unity2019安装后无法启动
    rider代码折叠
    使用rider调试lua
    MacType更好的字体渲染
    Unity字体和画面花屏处理
  • 原文地址:https://www.cnblogs.com/zzyh/p/7491102.html
Copyright © 2011-2022 走看看