遞推的矩陣乘法解決練習1

2021-08-03 00:03:27 字數 1060 閱讀 5674

三個袋子

平平在公園裡遊玩時撿到了很多小球,而且每個球都不一樣。平平找遍了全身只發現了3個一模一樣的袋子。他打算把這些小球都裝進袋子裡(袋子可以為空)。他想知道他總共有多少種放法。

將n個不同的球放到3個相同的袋子裡,求放球的方案總數m。

結果可能很大,我們僅要求輸出m mod k的結果。

現在,平平已經統計出了n<=10的所有情況。見下表:

n   1   2   3    4    5   6    7     8     9      10

m 1 2 5 14 41 122 365 1094 3281 9842

兩個整數n,k,n表示球的個數。

輸出僅包括一行,乙個整數m mod k 。

11 10000
9525
對於 40%資料,10<=n<=10,000

對於100%資料,10<=n<=1,000,000,000

對於 100%資料,k<=100,000.

這題需要我們先把遞推公式找出來。不難發現f[i]=f[i-1]*3-1。但是如果用o(n)的演算法列舉的話肯定會超時,那麼在這種情況下我們只能用矩陣乘法來解決了。這個矩陣x得出來就是3 0,再用矩陣快速冪求這個矩陣的n-1次方就是答案了

-1 1

ac**:

#include

#include

#include

#define ll long

long

using

namespace std;

int mod;

structjz;

jzmult(jz

a,jzb)}

}return c;}jz

qpow(jz

m,int n)

n>>=1;

m=mult

(m,m);

}return mul;

}int

main

()

基礎練習 矩陣乘法

問題描述 給定乙個n階矩陣a,輸出a的m次冪 m是非負整數 例如 a 1 23 4 a的2次冪 7 10 15 22 輸入格式 第一行是乙個正整數n m 1 n 30,0 m 5 表示矩陣a的階數和要求的冪數 接下來n行,每行n個絕對值不超過10的非負整數,描述矩陣a的值 輸出格式 輸出共n行,每行...

基礎練習 矩陣乘法

問題描述 給定乙個n階矩陣a,輸出a的m次冪 m是非負整數 例如 a 1 23 4 a的2次冪 7 10 15 22 輸入格式 第一行是乙個正整數n m 1 n 30,0 m 5 表示矩陣a的階數和要求的冪數 接下來n行,每行n個絕對值不超過10的非負整數,描述矩陣a的值 輸出格式 輸出共n行,每行...

基礎練習 矩陣乘法

基礎練習 矩陣乘法 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定乙個n階矩陣a,輸出a的m次冪 m是非負整數 例如 a 1 23 4 a的2次冪 7 10 15 22 輸入格式 第一行是乙個正整數n m 1 n 30,0 m 5 表示矩陣a的階數和要求的冪數 接下來n行,每行n個絕...