ZOJ 3690 Choosing number(矩陣快速冪)
題目地址:ZOJ 3690
假設F(n)表示前n個人第n個人選擇的數大於k的個數,G(n)表示的是前n個人第n個人選擇的數小於等於k的個數
那麼F(n) = F(n-1)*(m-k)+G(n-1)*(m-k) , G(n) = F(n-1)*k+G(n-1)*(k-1) , 那麼最後的結果就是F(n)+G(n);
那麼我們可以構造出矩陣
| m-k m-k| | F(n-1) | | F(n) |
| k k-1| * | G(n-1) | => | G(n) |
那麼初始值F(1) = m-k , G(1) = k
代碼如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include