zoukankan      html  css  js  c++  java
  • 计算系数(noip2011)

    【问题描述】
    给定一个多项式(ax + by)^k,请求出多项式展开后(x^n)*(y^m)项的系数。
    【输入】
    输入文件名为 factor.in。
    共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开。
    【输出】
    输出文件名为 factor.out。
    输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。
    【输入输出样例】

    factor.in

    factor.out

    1 1 3 1 2

    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。

    分析:

    首先弄懂样例,然后从简单数据入手找规律。

    (a*x+b*y)^2=(a*x)^2+2*a*b*x*y+(b*y)^2

    (a*x+b*y)^3=(a*x)^3+3*(a^2)*b*(x^2)*y+3*a*(b^2)*x*(y^2)+(b*y)^3

    (a*x+b*y)^4=(a*x)^4+4*(a^3)*b*(x^3)*y+6*(a^2)*(b^2)*(x^2)*(y^2)+4*a*(b^3)*x*(y^3)+(b*y)^3 

    (a*x+b*y)^5=......

    通过这几个简单的公式可以得出(x^n)*(y^m)的系数为t*(a^n)*(b^m),t值如下所示:

    1 2 1 

    1 3 3 1

    1 4 6 4 1

    1 5 10 10 5 1

    .........

    这不就是杨辉三角么(当然也是所有的组合情况C(k,n))

    若f[i,j]表示(a*x+b*y)^i展开后的系数

    (a^n)*(b^m)的系数为f[i,i-n+1]

    f[i,j]:=f[i-1,j-1]+f[i-1,j];

    结果:ans=f[k,k-n+1]*(a^n)*(b^m)

    由于题目要求输出对10007 取模后的结果,则有:

    f[i,j]:=((f[i-1,j-1] mod 10007)+(f[i-1,j]mod 10007))mod 10007;

    a^n=((a^(N-1))mod 10007*a)mod 10007

    b^m=((b^(m-1))mod 10007*b)mod 10007

    (a^n可以边乘边取余数的方法做,也可用快速幂)。

    注意:边界条件k=0,k=n等。

     1 const
     2   maxk=1100;
     3 var
     4   a,b,k,n,m,i,j,ans:longint;
     5   f:array[0..maxk,0..maxk] of longint;
     6 begin
     7   readln(a,b,k,n,m);
     8   fillchar(f,sizeof(f),0);
     9   f[1,1]:=1;  f[1,2]:=1;
    10   for i:=1 to k do begin f[i,1]:=1;  f[i,i+1]:=1;  end;
    11   for i:=1 to k do
    12     for j:=2 to i do
    13       f[i,j]:=(f[i-1,j-1]+f[i-1,j] ) mod 10007;
    14   ans:=1;
    15   for i:=1 to  n do  ans:=(ans *a) mod 10007;
    16   for i:=1 to m do ans :=(ans *b)mod 10007;
    17   ans:=(f[k,k-n+1]*ans) mod 10007;
    18   if k=0 then writeln(1) else writeln(ans);
    19 end.
    View Code

     

  • 相关阅读:
    Delphi使用资源文件全攻略
    Javascript URL编码方法的比较
    评论:人才流失强力折射出现实畸形人才观
    AJAX从服务端获取数据的三种方法
    Builder 生成器模式(创建型模式)
    tsql中使用参数设置取值范围
    无法使用多维数据库模型创建报表模型
    报表模型_继承其他实体的属性
    Adapter 适配器(结构型模式)
    报表模型_指定点击链接型报表选项
  • 原文地址:https://www.cnblogs.com/ssfzmfy/p/3793437.html
Copyright © 2011-2022 走看看