hdu 4565 推倒公式 矩陣快速冪

2021-07-04 15:43:50 字數 2479 閱讀 1896

求下式的值: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

兩邊同時乘以a1

+b1 :cn

∗[(a

+b√)

+(a−

b√)]

=[(a+b

√)n+

(a−b

√)n]

∗[(a

+b√)

+(a−

b√)]

=(a+b√

)n+1

+(a−

b√)n

+1+(

a+b√

)n∗(

a−b√

)+(a

−b√)

n∗(a

+b√)

=cn+1+

(a2−

b)∗(

a+b√

)n−1

+(a2

−b)∗

(a−b

√)n−

1 =

cn+1

+(a2

−b)∗

cn−1

所以:cn+

1=2∗

a∗cn

−(a2

−b)∗

cn−1

寫成矩陣形式:[c

n+1c

n]=[

2∗a1

−(a2

−b)0

]∗[c

1c0]

至此,公式推導完畢,用快速冪求解就行了。

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

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pb push_back

#define mp make_pair

#define ll long long

#define lson lo,mi,rt<<1

#define rson mi+1,hi,rt<<1|1

#define min(a,b) ((a)<(b)?(a):(b))

#define max(a,b) ((a)>(b)?(a):(b))

#define mem0(a) memset(a,0,sizeof(a))

#define mem1(a) memset(a,-1,sizeof(a))

#define mem(a,b) memset(a,b,sizeof(a))

#define fin freopen("in.txt", "r", stdin)

#define fout freopen("out.txt", "w", stdout)

using

namespace

std;

const

double eps = 1e-8;

const

double ee = exp(1.0);

const

int inf = 0x3f3f3f3f;

const

int maxn = 1e3 + 10;

const

double pi = acos(-1.0);

const ll iinf = 0x3f3f3f3f3f3f3f3f;

int readt()

int mod;

typedef

vector

vec;

typedef

vector

mat;

mat mul(mat &a, mat &b)}}

return c;

}mat pow(mat a, ll n)

while (0

< n)

return b;

}int main()

return

0;}

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 公式推導 矩陣快速冪

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