#G4003. 铺地砖
铺地砖
题目描述
学校有一条宽 、长 的走廊,要用两种地砖把它铺满:
- 的长条砖,可以横着放,也可以竖着放;
- 的方砖。
地砖不能重叠,也不能超出走廊。两种铺法只要有某个位置铺的砖不同,就算作不同的铺法。
总务处想知道不同长度的走廊各有多少种铺法。共有 次询问,每次给出一个 ,请输出铺满 走廊的方案数。因为答案可能很大,请输出它除以 的余数。
输入格式
第一行一个整数 ,表示询问次数。
接下来 行,每行一个整数 。
输出格式
输出 行,每行一个整数,表示对应的方案数除以 的余数。
样例 #1
样例输入 #1
3
1
3
4
样例输出 #1
1
5
11
样例解释
用 | 表示一块竖放的长条砖,== 表示上下叠着的两块横放长条砖,[] 表示一块方砖:
- :只能竖放一块, 种;
- :
| | |、| ==、== |、| []、[] |,共 种。
提示
数据范围
- 对于 的数据:,;
- 对于 的数据:;
- 对于 的数据:,。
提示
- 设 表示铺满 走廊的方案数。考虑走廊最右边是怎么铺的:要么是一块竖放的长条砖,要么是占满最后两列的「两块横放长条砖」或「一块方砖」。由此可以得到递推式。
- 询问很多,每次都从头递推会超时。可以先把 全部算好存进数组,询问时直接输出。
- 每一步都要取余,计算中间结果时注意
int可能溢出。
相关
在下列比赛中: