问题 X: 排队问题


问题 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;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值