奶牛家族(斐波那契數列的快速冪乘矩陣演算法)

2021-10-03 18:38:54 字數 1370 閱讀 7141

tx面試題:

已知有一頭牛4年後開始生小牛,一次只能生乙隻,問20年後一共有多少頭牛?

這種問題就是簡單的遞迴:

這頭奶牛在第四年後能不斷生子直到第二十年,其子出生4年後又能不斷生子……

**如下:

#include

using

namespace std;

intfunc

(int n)

//計算當前這頭牛在n年中能創造多少後代(包括後代的後代)

return sum;

}int

main()

法2:

其實遞推公式就是斐波那契數列f(n)=f(n-1)+f(n-3);

intf(

int n)

intmain()

法3:

利用快速冪乘矩陣演算法求解斐波那契數列。

當n很大時,用遞迴求解斐波那契數列效率是非常低的,所以要用快速冪乘矩陣演算法求解斐波那契數列。將o(n)的時間複雜度,降到o(logn)。

//第1年:1

//第2年:2

//第3年:3

//第4年:4

//第5年:6

//f(n)=f(n-1)+f(n-3)

intcountsum

(int n)

;//單位陣

long base[3]

[3]=

;//要求base矩陣的n-3次方

int num = n -3;

while

(num)

multiply

(base, base)

;//(base^2) ^ (n/2) ...(base^4) ^ (n/4)...(base^n) ^ (1)

num /=2

;}return

(res[0]

[0]*

3+ res[0]

[1]*

2+ res[0]

[2]*

1)%1000000007;}

};

快速冪 斐波那契數列

1 編寫程式,求解a b。其中b是正整數。方法1.一般求冪演算法,o r public static long power1 int a,int r if r 0 long res 1 for int i 1 i r i return res 這種使用連乘計算冪值的演算法,複雜度是o n 不過如果將...

,快速乘,快速冪,矩陣快速冪 求斐波那契數列

快速冪 方法一 首先快速冪有幾個公式 1.a b mod c a mod c b mod c ab mod c a mod c b mod c mod c 積的取餘等於取餘的積取餘 快速冪演算法依賴於一下兩個公式 a b mod c a b 2 mod c b是偶數 a b mod c a b 2 ...

矩陣快速冪 斐波那契數列

time limit 1000 ms memory limit 128 mb 通過小l的不懈努力,他即將成為大神啦,他登上了大神專屬的頒獎臺。在頒獎台上,他即將領取代表著大神的無限榮譽的勳章。小l走上頒獎台後,在台上發現了乙個製作精美的盒子。榮譽勳章就在盒子裡面。小l發現這個盒子被上了鎖,在這個盒子...