趣題 矩陣乘法 NKOJ 1896 多公尺諾

2021-07-15 05:37:14 字數 2090 閱讀 9983

nkoj 1896 多公尺諾

時間限制 : 10000 ms 空間限制 : 65536 kb

問題描述

用2x1的多公尺諾骨牌填滿乙個4xn(1 ≤ n ≤ 10^9) 的棋盤,總共有多少總方案。

結果可能很大,輸出mod m((0 < m ≤ 10^5)的值。

輸入格式

一行,兩個整數n 和 m

輸出格式

一行,乙個整數表示結果。

樣例輸入

樣例輸入1:

3 10000

樣例輸入2:

5 10000

樣例輸出

樣例輸出1:

11 樣例輸出2:

95思路:

設狀態f[i]表示當n=i時的方案數,t[i]表示n=i時,不能拆成其他組合的方案數。

畫圖發現,t1=1,t2=5,t3=2,t4=3….即i>2時ti=i&1?2:3;

所以f[n]=sum(f[n-i]*t[i])+t[n] (i=1、2、3…..n-1)

令f[0]=0,則f[n]=sum(f[n-i]*t[i]) (i=1、2、3……n)

把特殊的ti分出來並分類討論:

當n為奇數時,

f[n]=f[n-1]+4*f[n-2]+2 * (f[n-3]+f[n-5]+….+f[0])+3 *(f[n-4]+f[n-3]+….f[1]);

f[n+1]=f[n]+4*f[n-1]+2 * (f[n-2]+f[n-4]+….f[1])+3 *(f[n-3]+f[n-2]+….f[0]);

設p=f[n-3]+f[n-5]+….+f[0]; q=f[n-4]+f[n-3]+….f[1];

則 f[n]=f[n-1]+4*f[n-2]+2 * p+3 * q;

f[n+1]=f[n]+4*f[n-1]+2 * (p+f[n-2])+3 * p;

當n為偶數時,

f[n]=f[n-1]+4*f[n-2]+2 * (f[n-3]+f[n-5]+….+f[1])+3 *(f[n-4]+f[n-3]+….f[0]);

f[n+1]=f[n]+4*f[n-1]+2 * (f[n-2]+f[n-4]+….f[0])+3 *(f[n-3]+f[n-2]+….f[1]);

設p=f[n-3]+f[n-5]+….+f[1]; q=f[n-4]+f[n-3]+….f[0];

則 f[n]=f[n-1]+4*f[n-2]+2 * p+3 * q;

f[n+1]=f[n]+4*f[n-1]+2 * (p+f[n-2])+3 * p;

發現無論n為偶數或奇數,轉移方程都一樣…

所以構造f=* a=f`=

所以,a長:

1 1 0 0

4 0 1 0

2 0 0 1

3 0 1 0

**:

#include

#include

#include

using namespace std;

#define ll long long

const int need=5;

typedef int

int_[need][need];

int n,m,f[5];

int_ a=,,,,},ans,c;

void matrix_multi(int

_ a,int

_ b)

void matrix_power(int b)

}int main()

matrix_power(n-4);

int cnt=ans[1][1]*f[4]%m;

cnt=(cnt+ans[2][1]*f[3])%m;

cnt=(cnt+ans[3][1]*(f[2]+1))%m;

cnt=(cnt+ans[4][1])%m;

printf("%d",cnt);

}

題 矩陣乘法 NKOJ 3711 擺花

nkoj 3711 擺花 時間限制 ms 空間限制 65536 kb 評測說明 時限1000ms 問題描述 藝術館門前將擺出許多花,一共有n個位置排成一排,每個位置可以擺花也可以不擺花。有些花如果擺在相鄰的位置 隔著乙個空的位置不算相鄰 就不好看了。假定每種花數量無限,求擺花的方案數。輸入格式輸出格...

NKOJ 4385 簡單計算(矩陣乘法)

問題描述 給你三個整數 n,x,和 m,計算 n k 1k xxk 輸入格式 一行,三個整數n,x,和 m,輸出格式 一行,乙個整數,表示計算結果 樣例輸入 1 100 1 10000 樣例輸出 1 樣例輸入 2 3 4 1000 樣例輸出 2 提示 1 n,m 2 10 9 1 x 50.注意到x...

挑戰題9 矩陣乘法

9 矩陣乘法 問題描述 給定乙個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的值 輸出說明 輸...