斐波那契數列卷積 矩陣快速冪)

2022-05-31 16:27:11 字數 934 閱讀 2209

斐波那契數列卷積

已知數列 an=∑k=0nfn−k×fka_n=\sum_^f_ \times f_kan=∑k=0nfn−k×fk ,其中 f 是斐波那契數列,遞推式為:

f0=0,f1=1f_0=0,f_1=1f0​=0,f1​=1,滿足fn=fn−1+fn−2f_n=f_+f_fn​=fn−1​+fn−2​,需要求出ana_nan​mod 998244353

一行乙個整數 n

對於 100% 的資料,滿足 1≤n≤10181 \leq n \leq 10^1≤n≤1018

一行乙個整數表示答案
示例1

3
2
示例2

19260817
511682927
題解:久違的ac,雖然是看題解a的

題解在這

#include typedef long long ll;

const ll mod = 998244353;

struct node

;//矩陣相乘

node get_mul(node a, node b) }}

return c;

}int main()

b.v[i][i] = 1;

}n -= 4;

while(n)

ll ans = 0;

for(int i = 0; i < 3; i++) ans = (ans % mod + b.v[i][0] * d[i] % mod) % mod;

printf("%lld\n",(ans + mod) % mod);

}return 0;

}

矩陣快速冪 斐波那契數列

time limit 1000 ms memory limit 128 mb 通過小l的不懈努力,他即將成為大神啦,他登上了大神專屬的頒獎臺。在頒獎台上,他即將領取代表著大神的無限榮譽的勳章。小l走上頒獎台後,在台上發現了乙個製作精美的盒子。榮譽勳章就在盒子裡面。小l發現這個盒子被上了鎖,在這個盒子...

矩陣快速冪 斐波那契數列

先來實現乙個矩陣相乘的函式吧。const int mod 10000 struct mat mat mat mul mat x,mat y 實現兩個矩陣相乘,返回的還是乙個矩陣。return res 其實和普通快速冪類似,只不過這裡需要得到的是乙個矩陣下面來實現乙個矩陣快速冪 int pow int...

斐波那契數列 矩陣快速冪

輸入格式 輸入乙個正整數n 1 n 1e18 輸出格式 輸出乙個數,數列的第n項 輸入樣例1 1輸出樣例1 1輸入樣例2 3輸出樣例2 2 一 矩陣相乘 若a為n k矩陣,b為k m矩陣,則它們的乘積將是乙個n m矩陣。兩個矩陣能相乘的前提條件為前乙個矩陣的列數等於後乙個矩陣的行數。兩矩陣相乘的 如...