刚刚入门C语言,仅作参考,求佬指点。
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
样例">样例">样例">样例">输入样例:
30
输出样例:
9
开始经过计算以后可知是斐波那契数列,但是本题反着来,并不是输出斐波那契数列,而是说明一个值,让你计算什么时候加和的斐波那契能>=这个值。
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int a = 1,b=0;//斐波那契起始条件
int sum=0;//加和
int cnt = 1;//计数器
while (sum <n) {
cnt++;
sum = a + b;//暂定a,b为前两个数
b = a;
a = sum;//上个月的sum变成了下个月的a
}
if(n<2){
cnt=1;//特殊条件
}
printf("%d\n", cnt);
return 0;
}
贴一段斐波那契 1, 1, 2, 3, 5, 8, 13, 21, 34,