兔子繁衍问题
一对兔子,从出生后第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;
} 以你的题义,我觉得这样就够了。
#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;
} ba21 发表于 2020-1-12 22:35
以你的题义,我觉得这样就够了。
#include
还是有一个错误。。。。 最后的魁拔 发表于 2020-1-12 22:37
还是有一个错误。。。。
敢问有什么错误??????????? ba21 发表于 2020-1-12 22:40
敢问有什么错误???????????
我也不清楚所以才问你们这些大佬的。。。。。 本帖最后由 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> jackz007 发表于 2020-1-12 22:51
编译、运行实况:
上面还是显示有问题 最后的魁拔 发表于 2020-1-12 22:54
上面还是显示有问题
问题是什么? jackz007 发表于 2020-1-12 22:55
问题是什么?
就是我上面发的那张图片。。。。只显示有错误 最后的魁拔 发表于 2020-1-12 22:45
我也不清楚所以才问你们这些大佬的。。。。。
你难道不会点下 感叹号? ba21 发表于 2020-1-12 23:01
你难道不会点下 感叹号?
点感叹号又不会显示具体的错误{:10_319:} 那就别在这平台做了,leetcode它不香么 最后的魁拔 发表于 2020-1-12 22:58
就是我上面发的那张图片。。。。只显示有错误
本例是标准的斐波那契数列问题,该数列第 8、9项的值分别是 21 和 34,所以,当 N = 30 的时候,9 无疑是正确答案!
#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]