HDU 4565 (構造共軛函式 矩陣快速冪)

2021-09-16 21:22:16 字數 984 閱讀 7764

hdu 4565

問你乙個很大的底很大的超級大次冪。而且底數可能還是無理數,用普通的方法直接去算會超時,而且不一定精確。

這裡要用到構造共軛函式以及矩陣快速冪的方法去做。

分為兩部分:

第一部分、構造共軛函式

覺得構造這部分是難點,也是主要的部分,需要一定的數學功底。下面有大神的推導過程。

第二部分、矩陣快速冪

矩陣快速冪類似於之前學習的整數的快速冪。只是把底數換成了個矩陣。不過對應的有些地方要修改一下。因為要矩陣相乘,我們需要過載一下乘法運算子。

**有個坑就是:因為取模的數字可能是負數,所以取模之前要把前面的數字加上模之後再取模,不然各種wa。**之前學長就提醒過好多次了,不過自己一直沒做到這種題(準確來說是做到了不會做,卻還沒補),結果現在做就wa這裡了。

這是鏈結

優秀啊

#include

#include

#include

#include

typedef

long

long ll;

using namespace std;

const ll size=2;

//the max size of matrix

ll a,b,n,mod;

struct mat

void

init

(ll a,ll b,ll c,ll d)

mat operator *

(const mat &c)

//運算子過載

}base;

mat matpow

(ll n)

//求n次方

return ans;

}int

main()

}return0;

}

HDU 4565 矩陣快速冪

矩陣快速冪模板 用矩陣快速冪實現斐波拉希數的推導 這個矩陣自乘n次。連續自乘n次的話就沒意思了,那還不如直接上fibonacci遞推公式呢。矩陣的魅力就在於它可以上快速冪。因為矩陣乘法滿足結合律麼 注意取模 加m因為有mod負 include include include include defi...

hdu4565矩陣快速冪

這題太坑了。剛開始以為可以用 a sqrt b 1 水過。結果tle,還一直想明明我logn的做法怎麼可能tle。0 1 實在無奈看的題解 a sqrt b n x y sqrt b a sqrt b n 1 a x b y x a y sqrt b 這樣可以構造矩陣 a b x 1 b y 還有記...

hdu 4565 推倒公式 矩陣快速冪

求下式的值 sn a b n m 其中 0 m 215 0n 231 a 1 2 b令 a n a b n b n a b n c n an bn 因為 a 1 2 b所以 0 b 1 所以 0 a b n 1 即 bn 1 也就是說,cn an sn cn 因此,求cn 就行了。cn 兩邊同時乘以...