斐波那契 (Standard IO)
生活随笔
收集整理的這篇文章主要介紹了
斐波那契 (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個。剛好是規律的組合個數,有零次方。 我們發現那些指數就是斐波那契數列啊!!代碼
constmood=1000000007; varn:longint;boo:array [0..1000001] of boolean;a,f:array [0..1000001] of longint;ans:int64; procedure try1; vari:longint; beginf[1]:=1; f[2]:=1;for i:=3 to n dof[i]:=(f[i-1]+f[i-2]) mod mood; end;procedure main; vari,j,t:longint; beginfillchar(boo,sizeof(boo),false);fillchar(a,sizeof(a),0);for i:=2 to n doif not boo[i] thenbegina[i]:=f[n-i+1];j:=i+i;while j<=n dobeginboo[j]:=true;t:=j;while t mod i=0 dobegint:=t div i;a[i]:=(a[i]+f[n-j+1]) mod mood;end;j:=j+i;end;end; end;procedure print; vari:longint; beginans:=1;for i:=2 to n doans:=(ans*(a[i]+1)) mod mood;write(ans); end;beginreadln(n);try1;main;print; end.轉載于:https://www.cnblogs.com/zyx-crying/p/9319615.html
總結
以上是生活随笔為你收集整理的斐波那契 (Standard IO)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android引入library失败的可
- 下一篇: STL--lower_bound()up