三個袋子
平平在公園裡遊玩時撿到了很多小球,而且每個球都不一樣。平平找遍了全身只發現了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個絕...