Quiz
https://yukicoder.me/problems/no/718
Submit
https://yukicoder.me/submissions/341945
解法
公式解説の通り
行列ライブラリ
- 持ってない・・・。とりあえず必要な掛け算とpowを書いた
- 2x2限定
using ll = long long; using VV = vector<vector<ll> >; VV mul(VV A, VV B){ VV C = {{0, 0}, {0, 0}}; C[0][0] = (A[0][0] * B[0][0] + A[0][1] * B[1][0]) % mod; C[0][1] = (A[0][0] * B[0][1] + A[0][1] * B[1][1]) % mod; C[1][0] = (A[1][0] * B[0][0] + A[1][1] * B[1][0]) % mod; C[1][1] = (A[1][0] * B[0][1] + A[1][1] * B[1][1]) % mod; return C; } VV pow(VV A, ll N){ if(N==1){ return A; } if(N%2==0){ return pow(mul(A, A), N/2); } else{ return mul(A, pow(A, N-1)); } }