矩陣快速冪 HDU1757

2021-07-11 14:19:33 字數 979 閱讀 8257

題目連線

給出k,m,求f(k)%m,其中

x<10時,f(x)=x

x>=10時,f(x)=a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10)

ai(0<=i<=9)會給出且只能為0或1

帶入公式易推導得

k>=10時,

f(k)=f(9)*b0+f(8)*b1+f(7)*b2+f(6)*b3+f(5)*b4+f(4)*b5+f(3)*b6+f(2)*b7+f(1)*b8+f(0)*b9;

其中,b1-b9可用以下矩陣求出:

該矩陣的a0-a9是題目給出,求出這個矩陣的(k-9)次方後的首行數即是b0-b9的值。這裡需要用到矩陣快速冪。

#include "bits/stdc++.h"

using

namespace

std;

typedef

long

long ll;

struct matrix //矩陣

;matrix in;

matrix e;

ll mod;

ll k;

matrix mul(matrix a, matrix b) //矩陣乘法}}

return ans;

}matrix quickpow(ll k) //快速冪

return ans;

}int main()

for(i = 1; i < 10; i++)

//所求矩陣初始化

if(k >= 10)

printf("%lld\n", pri);

}else

}return

0;}

hdu1757矩陣快速冪

這題不錯,開始看題目,以為是道水題,花幾分鐘打了個暴搜,果斷runtime error,棧溢位。於是馬上找規律,發現可以轉換成矩陣乘法和快速冪解決,不過由於審題不清,搞錯了a0.a9的順序,調了老半天才發現。hdu1757 win.cpp created on 2012 7 9 author ben...

hdu 4965 矩陣快速冪

給定兩個矩陣a,b,分別為n k和k n 求出矩陣c a b,矩陣m c n n 將矩陣m中的所有元素取模6,得到新矩陣m 並計算矩陣m 中所有元素的和 注意到ba 得到 6 6,而ab 得到1000 1000 轉化乘法算式為 m abababab.a ba n n 1 b 直接用矩陣快速冪即可 i...

快速矩陣冪HDU2276

題意 有n盞燈,編號為1到n。0表示不亮,1表示亮,如果 i th的燈的左邊燈是亮的,那麼下一秒鐘,i th燈的狀態要改變,0變成1,1變成0。第1個燈的 左邊是第n個燈 輸入t,輸入開始的狀態 問你在第t秒時,燈的狀態時什麼樣的,輸出來。分析 可推出下一秒的狀態a i a i 1 n n a i ...