题目描述:
一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。
输入描述:
测试数据包括多组,每组一行,为整数n(1≤n≤90)。
输出描述:
对应输出第n天有几只兔子(假设没有兔子死亡现象)。
输入例子:
1
2
输出例子:
1
2
- 这样的题目主要是抓住递推式的关系。
我对于F(n)=F(n-1)+1F(n-2)的公式理解是这样的。F(n-1)代表昨天的兔子总量。F(n-2)代表前天的兔子总量,刚好只有前天的兔子具有生产能力。
所以如果题目改成一只成熟的兔子能够生产2只,那么通项公式为F(n)=F(n-1)+2F(n-2) - 先预处理一个数组,这样对于多组测试数据就可以节约一点时间。
代码:
#include<iostream>
using namespace std;
int main(){
int n;
long long a[91]={1,2};
for(int i=2;i<91;i++){
a[i] = a[i-1]+a[i-2];
}
while(~scanf("%d",&n)){
printf("%lld\n",a[n-1]);
}
}