【笔试题】养兔子

【笔试题】养兔子



1、题目描述

  一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。


2、输入/出描述

  输入描述:测试数据包括多组,每组一行,为整数n(1≤n≤90)。

  输出描述:对应输出第n天有几只兔子(假设没有兔子死亡现象)。


3、示例

输入: 1 2

输出: 1 2


4、分析

  刚开始递推公式不是很好想,就把前几天兔子的个数列出来,分为成熟兔子+刚生下来的兔子,第i+1天的成熟兔子等于第i天的所有兔子,第i+1天的刚生下来的兔子等于第i天的成熟兔子即第i-1天的所有兔子,即可得出递推式。除此之外用递归会超时,用一维数组存就好了。

时间 成熟兔子 刚生下来的兔子
第1天 1 0
第2天 1 1
第3天 2 1
第4天 3 2
第5天 5 3
第6天 8 5
第7天 13 8

  在者,仔细观察它其实就是斐波那契数列。


5、代码

#include <iostream>
using namespace std;
int main(){
    
    
	int n;
	long long a[100];
	a[1]=1;
	a[2]=2;
	while(cin>>n){
    
    
		for(int i=3;i<=n;i++){
    
    
			a[i]=a[i-1]+a[i-2];
		}
		cout<<a[n]<<endl;
	}
}

猜你喜欢

转载自blog.csdn.net/Sunnyside_/article/details/115081693