矩陣快速冪求斐波那契數列的模板
**
因為fib(n)至於最近的倆個序列有關(及fib(n-1)和fib(n-2)),所以我們儲存最近的那倆個就行了。設f(n)表示乙個1*2的矩陣,f(n)=[fib(n),fib(n+1)],可以看成【a,b】–>【a+b,b】;
所以可以變成f(n)=f(n-1)*a; (a表示乙個二維矩陣) a[2][2]=,};然後就可以得到最終的表示式 f(n)=*a^n(表示矩陣a的n次方);
難點也就在於如何求矩陣a的n次方。這就需要結合快速冪的方法求矩陣的冪次。
#include#includeusing namespace std;
typedef long long ll;
const int mod=10000;
void mul(int f[2] ,int a[2][2])
void mulself(int a[2][2])
int main();
int a[2][2]=,};
while(n)
printf("%d\n",f[0]);
} return 0;
}
矩陣快速冪求斐波那契數列
求數a aa的n nn次冪,可以採用二分法進行快速計算,即 a n a cdot a n為偶數 a cdot a cdot a n為奇數 end right.an a n a a a cdot a cdot a cdot a cdots a a cdot a cdot a cdot a 2 cdot...
矩陣快速冪 斐波那契數列
time limit 1000 ms memory limit 128 mb 通過小l的不懈努力,他即將成為大神啦,他登上了大神專屬的頒獎臺。在頒獎台上,他即將領取代表著大神的無限榮譽的勳章。小l走上頒獎台後,在台上發現了乙個製作精美的盒子。榮譽勳章就在盒子裡面。小l發現這個盒子被上了鎖,在這個盒子...
矩陣快速冪 斐波那契數列
先來實現乙個矩陣相乘的函式吧。const int mod 10000 struct mat mat mat mul mat x,mat y 實現兩個矩陣相乘,返回的還是乙個矩陣。return res 其實和普通快速冪類似,只不過這裡需要得到的是乙個矩陣下面來實現乙個矩陣快速冪 int pow int...