1045 - 小明的烦恼
时间限制 : 1 秒
内存限制 : 32 MB
小明最近新买了一个房间,为了给它做装修,想要给它铺上地砖。然而现有的地砖只有两种规格分别为1米1米、2米2米,由于小明买的房间有点小,宽度只有3米,长度为N米。当然这样一个房间也足够他自己一个人住了。那么如果要给这个房间铺设地砖,且只用以上这两种规格的地砖,请问有几种铺设方案。
题目输入
输入的第一行是一个正整数C,表示有C组测试数据。接下来C行,每行输入一个正整数n(1<=n<=30),表示房间的长度。
题目输出
对于每组输入,请输出铺设地砖的方案数目。
输入/输出样例
输入格式
2 2 3
输出格式
3 5
C语言解答
#include<stdio.h> int main() { int i,c,n,a[31],b[31],sum; a[1]=1; sum=a[1]; for(i=2;i<=30;i++) { if(i%2==0) { a[i]=sum+2; sum=sum+a[i]; } else { a[i]=sum+1; sum=sum+a[i]; } } scanf("%d",&c); while(c--) { scanf("%d",&n); printf("%d\n",a[n]); } return 0; }
C++解答
#include<stdio.h> int main() { int i,c,n,a[31],b[31],sum; a[1]=1; sum=a[1]; for(i=2;i<=30;i++) { if(i%2==0) { a[i]=sum+2; sum=sum+a[i]; } else { a[i]=sum+1; sum=sum+a[i]; } } scanf("%d",&c); while(c--) { scanf("%d",&n); printf("%d\n",a[n]); } return 0; }
Java解答
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int[] b=new int[31]; b[1]=1; b[2]=3; for(int i=3;i<31;i++){ b[i]=b[i-1]+2*b[i-2]; } while(a--!=0){ System.out.println(b[sc.nextInt()]); } } }