hdu4565矩陣快速冪

2022-03-16 01:34:11 字數 1150 閱讀 9914

這題太坑了。。。剛開始以為可以用|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|

還有記得矩陣乘法%m

最後還有乙個坑就是

(a-1)^20

( a + sqrt( b ) )^ n + ( a - sqrt( b ) )^ n = 2 * xn

( a + sqrt( b ) )^ n 向上取整的值就是 2 * xn(不用會超時@_@)

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pi acos(-1)

#define ll long long

#define mod 10

#define ls l,m,rt<<1

#define rs m+1,r,rt<<1|1

#pragma comment(linker, "/stack:1024000000,1024000000")

using

namespace

std;

const

double g=10.0,eps=1e-9

;const

int n=10+5,maxn=1

<<10+5,inf=0x3f3f3f3f

;struct

node;

ll m;

node mul(node x,node y)

node quick_mul(node x,ll n)

return

ans;

}int

main()

return0;

}

view code

HDU 4565 矩陣快速冪

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

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 兩邊同時乘以...

hdu 4565 公式推導 矩陣快速冪

參考 這公式真心難想到 向上取整等價於加上後面乙個式子,學習了orz。寫完快速冪,我還一直wa,最後才發現中途計算的時候沒有 a mod mod,因為會變成負數,坑啊。include include include include using namespace std define mn 2 de...