PTA 兔子繁衍問題

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

輸入格式:

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

輸出格式:

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

輸入樣例:

30

輸出樣例:

9

列表分析:

兔子繁衍問題(單位:對)
第1個月 第2個月 第3個月 第4個月 第5個月 第6個月 第7個月 第8個月 第9個月 第10個月
1   1 1 1 1 1 1 1 1
        1 1 1 1 1 1
          1 1 1 1 1
            1+1=2 1+1=2 1+1=2 1+1=2
              1+1+1=3 1+1+1=3 1+1+1=3
                1+1+1+2=5 1+1+1+2=5
                  1+1+1+2+3=8
1 1 2 3 5 8 13 21 34 55

由表可知,S(1)=1, S(2)=1, S(3)=2=S(1)+S(2), 以此類推,S(n)=S(n-1)+S(n-2),式中n表示第n個月,S表示兔子的總數。

此題解法:

要求輸入S的值,求n的值。

#include <stdio.h> 
/*
    N -- 給定兔子總數
    S -- 當前兔子總數
    n -- 第n個月
    temp -- 中間量
*/
int main(void)
{
    int N; 
    scanf("%d", &N); 
    
    int n = 1; 
    int S = 1;
    int temp = 0; 
    
    while ( S < N )
    {
        n++;
        
        if ( n == 2 )
        {
            S += temp; 
            temp = S; 
        }
        else
        {
            S += temp; 
            temp = S - temp; 
        }
    }
    
    printf("%d\n", n); 
    
    return 0; 
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章