7-5 兔子繁衍问题

发布时间 2023-11-02 22:39:04作者: 刘倩_网安2211

目录

题目

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

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

输出格式:
在一行中输出兔子总数达到N最少需要的月数。

输入样例:
30
输出样例:
9

思路

月份 1 2 3 4 5 6 7 8 9
兔子 (队) 1 1 1+1=2 2+1=3 3+2=5 5+3=8 8+5=13 13+8=21 21+13=34

当月兔子总队数=前一个月的兔子队数加上新生的兔子队数
新生的兔子队数取决于当月前数第二个月的兔子队数。因为兔子出生后第3个月成熟,成熟之后每队兔子每个月都会生1队小兔子,前数第二个月的兔子刚好都在当月会生新兔子,若再往前一个月则会漏掉前数第二个月刚成熟可生崽的兔子,若再往后一个月,即前一个月,则会多了未成熟的兔子,他们还不会生新兔子。

因此,从第三个月起,每个月的兔子总队数为前两个月的兔子数之和斐波那契数

代码

#include<stdio.h>

int main()
{
    int n;
    scanf("%d",&n);
    int a=1,b=1,t=1;
    int m=2;
    if(n==1)
    {
        printf("1\n");
               return 0;
    }
    for(;t<n;m++)
    {
        t=a+b;
        a=b;
        b=t;
    }
    printf("%d\n",m);
    return 0;
}

测评详情