這題太坑了。。。剛開始以為可以用|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#includeview code#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;
}
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...