簡單遞推公式轉換矩陣求解

2021-07-10 05:36:45 字數 732 閱讀 1984

對於許多遞推題目,由於資料範圍太大直接迴圈寫會爆掉,這時首先想到的就是矩陣優化,把遞推式轉換成01矩陣通過快速冪優化。

比如最簡單的斐波納挈,如果n非常大,迴圈遞推肯定是不合適的,那麼可以考慮下面的公式  (f[n],f[n-1])=(f[n-1],f[n-2])*a; 這裡的a是乙個01矩陣,此時的a= 2*2的矩陣,    可想而知 f[3] = a的n-2次冪*(f[2],f[1]);   形如斐波納挈的遞推公式轉換矩陣都很簡單, 順便附上poj3070的 斐波納挈轉矩陣快速冪的**

#include#include

#include

#define mod 10000

using

namespace

std;

struct

macpri,unit;

mac power(mac x,mac y)}}

return

temp;

}void eachother(int

n) pri =power(pri,pri);

n >>= 1

; }

printf(

"%d\n

",unit.frob[0][1

]);}

intmain()

if(n==1||n==2

)

eachother(n);

}return0;

}

拯救LongMM (遞推公式求解)

拯救l o n g m m l a n p a s c c p p 題目描述 longdd 將軍為了平息延續數年戰亂,決定釋放戰俘營中所有的俘虜。然而,longdd 將軍不打算釋放敵軍的統帥longmm 因為這個傢伙異常聰明,是個難纏的 對手。所以longdd 將軍決定把longmm 用鍊子固定到牆...

遞推公式的優化 矩陣乘方

想必大家對魔鬼序列 斐波那契數列都不陌生吧 f n 2 f n 1 f n 用程式設計實現的時候,有四種常見的方法 當然乙個比乙個更為優化 1.天真演算法,求哪個就迴圈去求哪個唄,這樣f 0 f 1 前面的這些會重複好多遍計算,當然慢了。2.由底至上的方法,用陣列儲存起來,按照順序乙個個往上計算,這...

華為機試 放蘋果(遞推公式求解)

題目描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入每個用例包含二個整數m和n。0 m 10,1 n 10。樣例輸入 7 3樣例輸出 public static int count int m,int n ...