C 模版 02數論演算法 4矩陣乘法

2021-08-08 04:07:41 字數 795 閱讀 3297

矩陣乘法:用來求某種遞推關係。 

矩陣相乘只有在第乙個矩陣的列數和第二個矩陣的行數相同時才有意義。 

設a為a*m的矩陣,b為m*b的矩陣,那麼矩陣c為矩陣a與b的乘積,其中矩陣c中的第i行第j列元素可以表示為: 

如下所示: 

【題目描述】

a[1]=a[2]=a[3]=1 

a[x]=a[x-3]+a[x-1] (x>3) 

求a數列的第n項對1000000007(10^9+7)取餘的值。 

【輸入格式】

第一行乙個整數t,表示詢問個數。 

以下t行,每行乙個正整數n。 

【輸出格式】

每行輸出乙個非負整數表示答案。 

**【樣例輸入】**3 6 8 10 

**【樣例輸出】**4 9 19 

【資料範圍】對於100%的資料 t<=100,n<=2*10^9;

開乙個2*2的矩陣:主要是為了快速冪的方便,乙個可以和自己乘上許多次(>=2)的矩陣只有可能是正方形的,所以要開這樣乙個矩陣。 

然後就是使用矩陣乘法來遞推。 

如果想要預處理,也是可以的,只不過t<=100,所以偷懶省空間。

struct mod

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

void make(int n)

printf("%d\n",c.a[3][3]%1000000007);

}int main(int argc,char *argv)

}寧波眼部整形

矩陣乘法(Strassen演算法 C 實現)

問題 請程式設計實現矩陣乘法,並考慮當矩陣規模較大時的優化方法。思路一 暴力解法 直接根據數學中矩陣乘法的計算公式 計算目標矩陣中各個元素的值。思路一 暴力解法 矩陣乘法,3個for迴圈搞定 void mul int matrixa,int matrixb,int matrixc 思路二 stras...

演算法疑難 c 實現 2 矩陣乘法

矩陣乘法就是按照矩陣相乘的規律,一步步來做的,也就是拿矩陣a的每一行乘以矩陣b的每一列,並且把矩陣a的每一行裡面的每乙個元素都和矩陣b裡面每一列的每乙個元素都一一相乘 3矩陣的乘法在演算法中有很多應用,4比如直接考矩陣的乘法,比如用矩陣優化遞推表示式等等56 7矩陣a 矩陣b 要滿足矩陣a的列等於矩...

C 演算法 稀疏矩陣的乘法實現(行邏輯鏈結法)

演算法背景 稀疏矩陣的類表示法 template class t class sparsematrix sparsematrix int row,int col rows row cols col size 0 void multiply const sparsematrix m sparsemat...