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; 
}

 

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