题目-兔子繁衍问题
题目-兔子繁衍问题
一对兔子,从出生后第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 }