模板 矩陣加速(數列)

2021-09-26 02:02:22 字數 1077 閱讀 6928

題目描述

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。

輸出格式

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

輸入輸出樣例

輸入 #136

810輸出 #149

19說明/提示

對於30%的資料 n<=100;

對於60%的資料 n<=2 * 10 ^ 7;

對於100%的資料 t<=100,n<=2 * 10^9;..

....

分析

.程式:

#include#include#includeusing namespace std;

long long mo=1000000007,ans[3][3],a[3][3];

void jzcf(long long x[3][3],long long y[3][3])

int main()

memset(ans,0,sizeof(ans));

memset(a,0,sizeof(a));

ans[0][0]=a[0][0]=1;ans[0][1]=a[0][1]=0;ans[0][2]=a[0][2]=1;

ans[1][0]=a[1][0]=1;ans[1][1]=a[1][1]=0;ans[1][2]=a[1][2]=0;

ans[2][0]=a[2][0]=0;ans[2][1]=a[2][1]=1;ans[2][2]=a[2][2]=0;

n--;

while (n!=0)

printf("%lld\n",(ans[1][0]+mo)%mo);

} return 0;

}

模板 矩陣加速(數列)(矩陣加速遞推)

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。輸出格式 每行輸出乙個非負整數表示答案。矩陣加速裸題 和我的前一篇基本一模一樣 只不過改變了要乘的...

Luogu1939 模板 矩陣加速(數列)

題目描述 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。輸出格式 每行輸出乙個非負整數表示答案。輸入輸出樣例 輸入樣例 1 3 6...

P1939 模板 矩陣加速(數列)

題目描述 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。輸出格式 每行輸出乙個非負整數表示答案。輸入輸出樣例 輸入 1 複製36 810輸出 1...