题:
-
总时间限制:1000ms 内存限制:65536kB
-
描述
-
草原上有一种羚羊,假设它们出生时为0岁,那么经过3年的成长,当它们在3岁的时候会成年,并开始繁殖。每一对羚羊在3岁的那一年会产下两只小羚羊,并且这对成年羚羊结为永久的伴侣,在以后的每一年又生出两只小羚羊。
假定一对羚羊产下的两只小羚羊必定为一雄一雌,羚羊在3岁时必定会找到另外一只同年羚羊结为永久伴侣,并开始繁殖。此外,假定这种羚羊在50岁以内不会死去。
如果在第0年,草原上有一对0岁的羚羊,那么第n年末草原上有多少对羚羊?
例如,第1年和第2年,草原上有1对羚羊;第3年,由于这对羚羊成年了,它们会生下一对羚羊,因此第3年末草原上有2对羚羊。
输入
-
第一行是一个正整数m(1<=n<=15),表示共有m个问题。
下面m行,每行是一个数字n(0<=n<=40),表示第n年。
输出
- 总共m行,每行一个数字,表示相应的第n年末草原上有几对羚羊。 样例输入:
-
3134
样例输出:
-
123
提示
- 结果不会超出int范围
解:
#include<iostream>
using namespace std;
int f(int a)
{
if(a>=0&&a<=2)
{
return 1;
}
else if(a==3)
{
return 2;
}
else{
return f(a-2)+f(a-3)+f(a-4);
}
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
cout<<f(a[i])<<endl;
}
return 0;
}