HDU 1568 Fibonacci
生活随笔
收集整理的這篇文章主要介紹了
HDU 1568 Fibonacci
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目鏈接
Problem Description
2007年到來了。經(jīng)過2006年一年的修煉,數(shù)學(xué)神童zouyu終于把0到100000000的Fibonacci數(shù)列(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2] (i>=2))的值全部給背了下來。接下來,CodeStar決定要考考他,于是每問他一個(gè)數(shù)字,他就要把答案說出來,不過有的數(shù)字太長了。所以規(guī)定超過4位的只要說出前4位就可以了,可是CodeStar自己又記不住。于是他決定編寫一個(gè)程序來測驗(yàn)zouyu說的是否正確。
Input
輸入若干數(shù)字n(0 <= n <= 100000000),每個(gè)數(shù)字一行。讀到文件尾。
Output
輸出f[n]的前4個(gè)數(shù)字(若不足4個(gè)數(shù)字,就全部輸出)。
Sample Input
0
1
2
3
4
5
35
36
37
38
39
40
Sample Output
0
1
1
2
3
5
9227
1493
2415
3908
6324
1023
AC
- 求第n項(xiàng)的斐波那契值,可以用公式和矩陣快速冪,但是這個(gè)題讓輸出答案的前4位,只能把所有的值求出來才能得到前四位
- 就用這個(gè)公式求第n項(xiàng)
- 如果直接套用公式是的話會(huì)超時(shí),這里可以兩邊求對數(shù)(log10),得到答案的小數(shù)部分,然后在求小數(shù)對應(yīng)的10的次方,這樣就得到了原答案除以n個(gè)10的結(jié)果舉個(gè)例子:
x = 127
log10(x) = 2.103803720955957
10的0.103803720955957次方=1.27
這樣求前4位,只用乘以1000就行 - 先對公式進(jìn)行化簡,然后取對數(shù)
- 當(dāng)n比較小的時(shí)候,公式計(jì)算不準(zhǔn)確,需要把前25項(xiàng)打表出來
總結(jié)
以上是生活随笔為你收集整理的HDU 1568 Fibonacci的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斐波那契常用公式
- 下一篇: Problem - 3936 FIB Q