zoukankan      html  css  js  c++  java
  • JZOJ 3027. 计算系数 (Standard IO) NOIP2011

    题目

    Description

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

    Input

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



    Output

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

    Sample Input

    1 1 3 1 2

    Sample Output

    3
     

    Data Constraint

    对于 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。

    分析

           这道题需要我们慢慢地推导

         首先以我们做过的数学题为基础,很明显推出来的是个杨辉三角

         1

         11

         121

         1331

         ……

         那到底是哪一个系数呢我们可以慢慢推导发现

         输出的其实是杨辉三角里面的F【k+1】【k-n+1】*a^n*b^m

    代码

     1 #include<iostream>
     2 #define M 10007
     3 using namespace std;
     4 long long a,b,k,n,m;
     5 long long f[2001][2001];
     6 long long poww(int a,int b){   //快速幂,用for语句代替也可以
     7     long long ans=1,base=a;
     8     while(b)
     9     {
    10         if(b&1!=0) ans*=base;
    11         ans%=M;
    12         base*=base;
    13         base%=M;
    14         b>>=1;
    15     }
    16     return ans%M;
    17 }
    18 int main ()
    19 {
    20     cin>>a>>b>>k>>n>>m;
    21     f[1][1]=1;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
    22     for (int i=2;i<=k+2;i++)  //杨辉三角
    23         for (int j=1;j<=i;j++)
    24             f[i][j]=(f[i-1][j-1]+f[i-1][j])%M;
    25     cout<<((f[k+1][k-n+1]*poww(a,n)%M*poww(b,m))%M);
    26 }
    为何要逼自己长大,去闯不该闯的荒唐
  • 相关阅读:
    JQuery源码解析-Dom加载过程
    多个script标签的作用域
    JQuery源码解析-JQuery的工具方法(1)
    JQuery源码解析-JQuery的工具方法
    JQuery源码解析-JQuery.extend()方法
    JQuery源码解析-添加JQuery的一些方法和属性
    中兴捧月算法精英挑战赛-迪杰斯特拉派
    C语言中的内存相关问题
    动态内存管理
    虚函数与虚继承小结
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/10288380.html
Copyright © 2011-2022 走看看