習題4-11 兔子繁衍問題(15 分)


 

一對兔子,從出生后第3個月起每個月都生一對兔子。小兔子長到第3個月后每個月又生一對兔子。假如兔子都不死,請問第1個月出生的一對兔子,至少需要繁衍到第幾個月時兔子總數才可以達到N對?

輸入格式:

輸入在一行中給出一個不超過10000的正整數N。

輸出格式:

在一行中輸出兔子總數達到N最少需要的月數。

輸入樣例:

30

輸出樣例:

9

網上經典解決方法:設當前第i個月,這個月的兔子總數,大致可以分為2部分,1部分是非新生的,另一部分是當月新生的。

非新生的應該是第i-1個月的兔子總數,新生的取決於第i-2個月的兔子總數。即兔子[i]=兔子[i-1]+兔子[i-2]。

於是,各個月的兔子數就形成了一個斐波那契數列:斐波那契數列指的是這樣一個數列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...。

#include<stdio.h>

int main(void)
{
    int N;
    scanf("%d",&N);
    if(N==1) printf("1");//如果總數為1則是第一個月 
    else
    {
        int i,count,x1=1,x2=1,sum=2,x=0;
        //x1為第一個月,x2為第二個月    
        for(i=2;x2<N;i++)
        {
            x=x1+x2;
            x1=x2;
            x2=x;
    }
    printf("%d",i);    
    }
    return 0;
} 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM