问题 X: 排队问题
时间限制: 1 Sec 内存限制: 128 MB题目描述
队列和优先队列是重要的数据结构。队列的概念在生活中经常用到。
这里有很多人在饭点排队。现在我们假设用 f 表示女士, m 表示男士。如果队列的长度为L,队列可能就有2^L种情况。
举个例子:如果L=2,可能就有ff、mm、fm、mf四种。如果存在一个子串含有fmf或fff,我们把它叫做O-queue,否则叫做E-queue。
输入
共T组数据(1 ≤ T ≤ 1000)。
每组数据输入一个字母L(1 ≤ L ≤ 10^5)。
输出
输出一个整数K表示有多少种方案形成E-queue。
因为结果可能很大,所以最终结果对(1e9+7)取余。
样例输入
3
2
3
4
样例输出
4
6
9
#include<cstdio>
const int max_n=1e9+7;
long long a[100010];
int main()
{
a[1]=2;a[2]=4;a[3]=6;a[4]=9;
for(int i=5;i<=100005;i++)
{
a[i]=a[i-1]+a[i-3]+a[i-4];
a[i]=a[i]%max_n;
}
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",a[n]);
}
return 0;
}