斐波那契數列(非遞迴高數值計算 數論 矩陣快速冪)

2021-10-01 04:39:11 字數 945 閱讀 9032

在斐波那契數列中,fib0=0,fib1=1,fibn=fibn−1+fibn−2(n>1)

給定整數n,求fibnmod10000

輸入格式

輸入包含多組測試用例。

每個測試用例佔一行,包含乙個整數n。

當輸入用例n=-1時,表示輸入終止,且該用例無需處理。

輸出格式

每個測試用例輸出乙個整數表示結果。

每個結果佔一行。

資料範圍

0≤n≤2∗109

輸入樣例:09

999999999

1000000000

-1輸出樣例:034

6266875

思路:矩陣快速冪求解。重點在構造矩陣。

#include

#include

#define mod 10000

using

namespace std;

void

mul(

int a[2]

[2],

int f[2]

);for(

int i=

0;i<

1;i++)}

}memcpy

(f,ans,

sizeof

(ans));

}void

mulself

(int a[2]

[2])

;for

(int i=

0;i<

2;i++)}

}memcpy

(a,c,

sizeof

(c));}

intmain()

,},f[2]=

;while

(n)mulself

(a);

n>>=1;

} cout<<}}

斐波那契數列 遞迴與非遞迴

首先來說下遞迴,遞迴的思想是大事化小。斐波那契數列 1,1,2,3,5,8,13,21.設f n 是第n個斐波那契數,當n 2,斐波那契數都為1 當n 2,那麼第f n 個斐波那契數就等於前兩個斐波那契數之和。遞迴的 實現 includeint fbnq int n int main 輸入10,得到...

數學 斐波那契數列 遞迴 非遞迴

include pch.h include using std cout using std cin typedef long long ll int fib int n ll fib notrec int n int main return 0 題目給的f 0 1,就這麼寫了 斐波那契第n項 時間...

非遞迴的斐波那契數列(Python)

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。n 39 思路 斐波那契數列最典型最簡單的方法當然是遞迴了,但是如果面試碰到這道題用遞迴做,offer是拿不到的。我們知道斐波那契數列永遠只跟上兩個數有關,那麼很自然的想到,我就保留上兩個的數值就好。class solut...