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

          洛谷 P1313 计算系数

    题目描述

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

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

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

    说明

    【数据范围】

    对于 30\%30% 的数据,有 0 ≤k ≤100k10 ;

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

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

    思路:要求 x* ym 的系数,必然要计算 (by+ax)k 中每一项的系数 

       那么问题来了,怎么求呢??

       我们可以列几个式子来找找规律

      当 a = b = 1 时:

       k = 0, (x + y)k = 1

       k = 1, (x + y)1 = x + y    各项系数为 1 1

       k = 2, (x + y)2 = x2 + 2xy + y2   各项系数为 1 2 1

       k = 3, (x + y)3 = x3 + 3x2y + 3xy2 + y3   各项系数为 1 3 3 1

      以此类推,我们可以发现:当 a = b = 1 时,各项系数满足“杨辉三角的分布规律”,由此可以得出:f [ i ][ j ] = f [ i-1 ][ j-1 ] + f [ i -1 ][ j ]

       这时候有的小盆友就要问了:那 a 和 b 不等于1时怎么算呢??

       不知道大家有没有发现,上面的式子退出来后,是按 x 降幂排列的,也就是说每一项的 x 的指数是 k , k-1, k-2, ... 1, 0,而 y 的指数刚好相反

       所以我们可以按照 y 的指数来寻找 x* ym 的系数是“杨辉三角”中当前行的第几个数字

       而后用这个数去乘 an * bm,取余后即为题目中所要求的系数

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #define Mod 10007
    #define LL long long
    using namespace std;
    int a, b, k, n, m;
    LL f[1005][1005];
    
    LL pow(LL x, LL y) {    //快速幂求x^y
        int res = 1;
        while(y) {
            if(y & 1) res = res * x % Mod;
            x = x % Mod;
            x = (x * x) % Mod;
            y >>= 1;
        }
        return res;
    }
    
    int main() {
        cin >> a >> b >> k >> n >> m;
        a %= Mod; b %= Mod;
        f[0][0] = 1; f[1][0] = 1; f[1][1] = 1;
        for(int i = 2; i <= k; i++) {
            f[i][0] = 1;
            for(int j = 1; j <= i; j++)
                f[i][j] = (f[i-1][j-1] + f[i-1][j]) % Mod;
        }
        int x = pow(a, n), y = pow(b, m);
        long long ans = f[k][m] * x * y % Mod;
        printf("%lld
    ", ans);
        return 0;
    }
    View Code
  • 相关阅读:
    scala的Class
    scala的Map
    log4j配置文件详细解释
    学习线程1之建立线程,并启动
    Spring中WebApplicationContext的研究
    Log4j 配置 的webAppRootKey参数问题
    JNDI绑定数据库
    Struts2配置之Struts.properties
    Java多线程-工具篇-BlockingQueue
    StringUtils判断字符串是否为空的方法
  • 原文地址:https://www.cnblogs.com/v-vip/p/9313712.html
Copyright © 2011-2022 走看看