hdoj 1568 斐波那契數列 數學

2021-07-24 13:40:05 字數 1509 閱讀 8775

problem description

2023年到來了。經過2023年一年的修煉,數學神童zouyu終於把0到100000000的fibonacci數列

(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部給背了下來。

接下來,codestar決定要考考他,於是每問他乙個數字,他就要把答案說出來,不過有的數字太長了。所以規定超過4位的只要說出前4位就可以了,可是codestar自己又記不住。於是他決定編寫乙個程式來測驗zouyu說的是否正確。

input

輸入若干數字n(0 <= n <= 100000000),每個數字一行。讀到檔案尾。

output

輸出f[n]的前4個數字(若不足4個數字,就全部輸出)。

sample input

012

34535

3637

3839

40

sample output

011

2359227

1493

2415

3908

6324

1023

分析:求斐波那契的通項公式:

對數的性質,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);

floor函式:

floor(x),有時候也寫做floor(x),其功能是「向下取整」,或者說「向下捨入」,即取不大於x的最大整數(與「

四捨五入

」不同,下取整是直接取按照數軸上最接近要求的值左邊的值,也就是不大於要求的值的最大的那個)。

floor(3.14) = 3.0

floor(9.999999) = 9.0

floor(-3.14) = -4.0

floor(-9.999999) = -10

假設給出乙個數10234432,

那麼log10(10234432)=log10(1.0234432*10^7)【用科學記數法表示這個數】=log10(1.0234432)+7;

log10(1.0234432)就是log10(10234432)的小數部分.

log10(1.0234432)=0.010063744(取對數所產生的數一定是個小數)

再取一次冪:10^0.010063744=1.023443198

最後再將這個數乘上1000,再用floor函式即可

**如下:

#include#include#include#includeconst double flag=(1+sqrt(5))/2;

int f[22]=;

int n;

int main()

while(scanf("%d",&n)!=eof) }

return 0;

}

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

迴圈斐波那契數列 斐波那契數列應用

什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...

斐波那契數列

1 題目描述 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。斐波那契數列的定義如下 輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入包括乙個整數n 1 n 70 輸出 對應每個測試案例,輸出第n項斐波那契數列的值。2 這是九度上的乙個題,要求時間限制1秒,整數的...