• 洛谷P1313 计算系数【快速幂+dp】


    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题

    题目链接:https://www.luogu.org/problemnew/show/P1313

    题解:好久没做题了,开坑第一题。。。

    最后我们需要求解的结果是ans=dp[k+1][m]*(a^n)*(b^m) mod 10007

    这题目首先是组合数,很快我们能够联系到dp相关知识,可以看出来这就是个杨辉三角,我们需要求解的是C(k,m),而我们设置从1开始,所以我们需要求解的最后结果是dp[k+1][m],

    做法是dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;

    求解(a^n),(b^m)我们则采用快速幂来进行解决~~~做法如下:

    1 ll qpow(ll x,ll p){
    2     ll ret=1;
    3     for(;p;p>>=1,x=x*x%mod){
    4         if(p&1){
    5             ret=ret*x%mod;
    6         }
    7     }
    8     return ret;
    9 }

    最终我们可以写出实现结果:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 #define mod 10007
     5 ll dp[1010][1010];
     6 ll qpow(ll x,ll p){
     7     ll ret=1;
     8     for(;p;p>>=1,x=x*x%mod){
     9         if(p&1){
    10             ret=ret*x%mod;
    11         }
    12     }
    13     return ret;
    14 }
    15 int main(){
    16     ll a,b,k,n,m;
    17     scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m);
    18     for(ll i=1;i<=k+1;i++){
    19         dp[i][0]=1;
    20     }
    21     for(ll i=1;i<=k+1;i++){
    22         for(ll j=1;j<=m;j++){
    23             dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;
    24         }
    25     }
    26     ll ans=qpow(a,n)*qpow(b,m)*dp[k+1][m]%mod;
    27     printf("%lld
    ",ans);
    28     return 0;
    29 } 
  • 相关阅读:
    javaScript快速入门
    解决编程式路由往同一地址跳转时会报错的情况
    babel 依赖
    路由拆分可以达到一定程度的性能优化
    正则的扩展
    设计模式
    mysql数据库
    php基本语法
    事件循环
    面向对象编程
  • 原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/8453650.html
Copyright © 2020-2023  润新知