zoukankan      html  css  js  c++  java
  • 斐波那契 (Standard IO)

    Description

    小明有一个数列。
    a[0] = a[1] = 1。
    a[i] = i * a[i - 1] * a[i - 2](i≥2)。
    小明想知道a[n]的因子个数。
    

    Input

    输入仅一个正整数n。

    Output

    输出a[n]的因子个数mod 1,000,000,007的值。
    

    题解

    因为F[2]的因子个数等于2的一次方,
       F[3]的因子个数等于3的一次方*2的一次方,
       F[4]的因子个数等于4的一次方*3的一次方*2的二次方,
       F[5]的因子个数等于5的一次方*4的一次方*3的二次方*2的三次方,
       F[6]的因子个数等于6的一次方*5的一次方*4的二次方*3的三次方*2的五次方,
       F[7]的因子个数等于7的一次方*6的一次方*5的二次方*4的三次方*3的五次方*2的八次方。
       注释:不是真的乘起来,而是将指数的(数值+1)乘起来。F[3]的题意值是6,因子有4个。刚好是规律的组合个数,有零次方。
    我们发现那些指数就是斐波那契数列啊!!
    

    代码

    const
      mood=1000000007;
    var
      n:longint;
      boo:array [0..1000001] of boolean;
      a,f:array [0..1000001] of longint;
      ans:int64;
    procedure try1;
    var
      i:longint;
    begin
      f[1]:=1; f[2]:=1;
      for i:=3 to n do
        f[i]:=(f[i-1]+f[i-2]) mod mood;
    end;
    
    procedure main;
    var
      i,j,t:longint;
    begin
      fillchar(boo,sizeof(boo),false);
      fillchar(a,sizeof(a),0);
      for i:=2 to n do
        if not boo[i] then
          begin
            a[i]:=f[n-i+1];
            j:=i+i;
            while j<=n do
              begin
                boo[j]:=true;
                t:=j;
                while t mod i=0 do
                  begin
                    t:=t div i;
                    a[i]:=(a[i]+f[n-j+1]) mod mood;
                  end;
                j:=j+i;
              end;
          end;
    end;
    
    procedure print;
    var
      i:longint;
    begin
      ans:=1;
      for i:=2 to n do
        ans:=(ans*(a[i]+1)) mod mood;
      write(ans);
    end;
    
    begin
      readln(n);
      try1;
      main;
      print;
    end.
  • 相关阅读:
    JavaScript ---Function
    win7(x64)安装scrapy框架
    [转]mysql性能优化-慢查询分析、优化索引和配置
    [原创]win7环境下搭建eclipse+python+django开发环境
    [原创]Python/Django使用富文本编辑器XHeditor上传本地图片
    Ubuntu下mysql使用
    [整理] mysql操作
    [原创]Sql2008 使用TVP批量插入数据
    一个js获取数组下标的函数
    深入理解js的prototype以及prototype的一些应用
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319615.html
Copyright © 2011-2022 走看看