3332 數列時間限制: 1 s
空間限制: 256000 kb
題目等級 :大師 master
題目描述 description
a[1]=a[2]=a[3]=1
a[x]=a[x-3]+a[x-1] (x>3)
求a數列的第n項對1000000007(10^9+7)取餘的值。
輸入描述 input description
第一行乙個整數t,表示詢問個數。
以下t行,每行乙個正整數n。
輸出描述 output description
每行輸出乙個非負整數表示答案
樣例輸入 sample input
3 6
8 10
樣例輸出 sample output
4 9
19 資料範圍及提示 data size & hint
對於30%的資料 n<=100;
對於60%的資料 n<=2*10^7;
對於100%的資料 t<=100,n<=2*10^9;
分類標籤 tags
快速冪 矩陣乘法 數論
/*
矩陣乘法快速冪.
關鍵在於推矩陣.
這個題矩陣還是比較好推的.
然後很快就a了......
*/#include
#include
#include
#define mod 1000000007
#define maxn 4
#define ll long long
using
namespace
std;
ll b[maxn][maxn],a[maxn][maxn],ans[maxn][maxn],c[maxn][maxn];
void mi(int n)
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
for(int k=1;k<=3;k++)
c[i][j]=(c[i][j]+b[i][k]*b[k][j]%mod)%mod;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
b[i][j]=c[i][j],c[i][j]=0;
n>>=1;
}}void slove(int n)
int main()
return
0;}
codevs等差數列
題目描述 description 給定n 1 n 100 個數,從中找出盡可能多的數使得他們能夠組成乙個等差數列.求最長的等差數列的長度.輸入描述 input description 第一行是乙個整數n,接下來一行包括了n個數,每個數的絕對值不超過10000000.輸出描述 output descr...
codevs 等差數列
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解給定n 1 n 100 個數,從中找出盡可能多的數使得他們能夠組成乙個等差數列.求最長的等差數列的長度.輸入描述 input description 第一行是乙個整數n,接下來一行包括了n個數,每個數的絕對值不超過1000000...
Codevs 4357 不等數列
不等數列 題目描述 將1到n任意排列,然後在排列的每兩個數之間根據他們的大小關係插入 和 輸入格式 第一行2個整數n,k。輸出格式 乙個整數表示答案。樣例輸入 5 2 樣例輸出 資料範圍 對於30 的資料 n 10 對於100 的資料 k n 1000,對於30 n 10的資料,搜尋打表,狀態壓縮動...