最后的魁拔 发表于 2020-1-12 22:10:53

兔子繁衍问题

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

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

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

输入样例:
30

      
   
输出样例:
9
下面是我的,还是有些毛病,希望大佬指出#include <stdio.h>

int main(void)
{
    int d;
    scanf("%d",&d);
    int f1=1,f2=1;
    int i,f3;
   
    if(d==1)
    {
      printf("%d\n",1);
    }
    else if(d==2)
    {
      printf("%d\n",1);
    }
    else if(d==0)
    {
      printf("%d\n",0);
    }
    else
    {
      for(i=3;;i++)
      {
            f3 = f1 + f2;
            if(f3>=d)
            {
            printf("%d\n",i);
            break;
            }
            f1 = f2;
            f2 = f3;
      }
    }


    return 0;
}

ba21 发表于 2020-1-12 22:35:08

以你的题义,我觉得这样就够了。
#include <stdio.h>

int main(void)
{
    int n;
   
    int f1=1,f2=1;
    int i,f3;

        scanf("%d",&n);

    for(i=3; f2<n; i++)
    {
      f3 = f1 + f2;
      f1 = f2;
      f2 = f3;
    }

        printf("%d\n", i-1);



    return 0;
}

最后的魁拔 发表于 2020-1-12 22:37:52

ba21 发表于 2020-1-12 22:35
以你的题义,我觉得这样就够了。
#include



还是有一个错误。。。。

ba21 发表于 2020-1-12 22:40:14

最后的魁拔 发表于 2020-1-12 22:37
还是有一个错误。。。。

敢问有什么错误???????????

最后的魁拔 发表于 2020-1-12 22:45:01

ba21 发表于 2020-1-12 22:40
敢问有什么错误???????????

我也不清楚所以才问你们这些大佬的。。。。。

jackz007 发表于 2020-1-12 22:51:31

本帖最后由 jackz007 于 2020-1-12 22:54 编辑

      楼主测试一下这个代码呢?
#include <stdio.h>

int main(void)
{
      int a , b , c , k , n                                                   ;
      scanf("%d" , & n)                                                         ;
      for(a = 1 , b = 1 , k = 3 ; a + b < n ; c = a + b , a = b , b = c , k ++) ;
      printf("%d\n" , k)                                                      ;
}
      编译、运行实况:
C:\Bin>cl x.c
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 16.00.30319.01 版
版权所有(C) Microsoft Corporation。保留所有权利。

x.c
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.All rights reserved.

/out:x.exe
x.obj

C:\Bin>x
30
9

C:\Bin>

最后的魁拔 发表于 2020-1-12 22:54:25

jackz007 发表于 2020-1-12 22:51
编译、运行实况:

上面还是显示有问题

jackz007 发表于 2020-1-12 22:55:32

最后的魁拔 发表于 2020-1-12 22:54
上面还是显示有问题

      问题是什么?

最后的魁拔 发表于 2020-1-12 22:58:02

jackz007 发表于 2020-1-12 22:55
问题是什么?

就是我上面发的那张图片。。。。只显示有错误

ba21 发表于 2020-1-12 23:01:25

最后的魁拔 发表于 2020-1-12 22:45
我也不清楚所以才问你们这些大佬的。。。。。

你难道不会点下 感叹号?

最后的魁拔 发表于 2020-1-12 23:06:00

ba21 发表于 2020-1-12 23:01
你难道不会点下 感叹号?

点感叹号又不会显示具体的错误{:10_319:}

Croper 发表于 2020-1-12 23:30:16

那就别在这平台做了,leetcode它不香么

jackz007 发表于 2020-1-12 23:58:13

最后的魁拔 发表于 2020-1-12 22:58
就是我上面发的那张图片。。。。只显示有错误

      本例是标准的斐波那契数列问题,该数列第 8、9项的值分别是 21 和 34,所以,当 N = 30 的时候,9 无疑是正确答案!

shengxizi 发表于 2020-1-13 14:41:45


#include<stdio.h>
#include<stdlib.h>
int main()
{
        int m,n,tmp;
        int Fib(int m);
        void display(int tmp);

        printf("输入两个正整数m和n(1<=m<=n<=10000)");
        scanf_s("%d%d",&m,&n);
        while (m<=n)

        {

                tmp=Fib(m);
                display(tmp);
                m=m++;
               
        }

        system("pause");
        return 0;

}
int Fib(int m)
{
       
        int num1 = 1;
        int num2 = 1;
        int tmp = 0;
        int i = 0;
        if (m < 3)
        {
                return 1;
        }
        else
        {
                for (i = 0; i<=m-3; i++)
                {
                        tmp = num1 + num2;
                        num1 = num2;
                        num2 = tmp;
                       
                }
                return tmp;
       
}

}
void display(int tmp)
{
        printf("%d\n",tmp);
}

有点粗糙但是肯定是对的
页: [1]
查看完整版本: 兔子繁衍问题