Luogu1939 模板 矩陣加速(數列)

2021-08-23 12:01:06 字數 792 閱讀 5816

題目描述

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

8 10

輸出樣例#1:

4 9

19說明

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

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

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

題解不知道為什麼遞迴快速冪出現了玄妙的錯誤,向非遞迴低頭。

**

#include

#define ll long long

using

namespace

std;

const

int m=105,mod=1e9+7;

ll n=3,t;

struct matrix}mat,ans,one;

matrix operator *(matrix a,matrix b)

void out(matrix a)

matrix power(matrix x,ll p)

void in()

void ac()

int main()

luogu 1939 模板 矩陣加速(數列)

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 368 10 輸出樣例 1 4 919 對於...

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...

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 368 10輸出樣例 1 4919 對於30...