题目-兔子繁衍问题

题目-兔子繁衍问题

一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:

输入在一行中给出一个不超过10000的正整数N。
输出格式:

在一行中输出兔子总数达到N对最少需要的月数。
输入样例:

30
输出样例:

9

 具体分析

 根据题意,推演规律:用数字“1”代表该月出生的兔子,数字“12”代表长到第2个月的兔子,数字“123”代表长到第3个月的兔子,即具备生育能力的兔子。

假设兔子都不死,则每个月的所有“123”兔子都会产出新的一个“1”兔子

第1个月=1 :1

第2个月=1 :12

第3个月=2 :123  1

第4个月=3 :123  12  1

第5个月=5 :123   123  12  1  1

第6个月=8 :123  123  123  12  121  1  1

……  ……  ……

规律:自第3个月起,兔子的对数=上个月对数+上上个月对数

代码

 
 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int n, mon;
 7     cin >> n;
 8     //a、b表示初值,i代表月份,c表示从第3个月起的兔子对数  
 9     int a = 1, b = 1, c=0, i = 2;
10     
11     do{
12         c = a + b;
13         i++;
14         a = b;
15         b = c;
16     }while(n>c);
17     cout << i;
18     return 0;
19 } 

 

posted on 2021-05-21 15:33  屯饨  阅读(134)  评论(0编辑  收藏  举报

导航