习题4-11 兔子繁衍问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/melody_1016/article/details/83180571

习题4-11 兔子繁衍问题 (15 分)

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

输入格式:

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

输出格式:

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

输入样例:

30

输出样例:

9

 分析:见图解--->

代码:

方法一

#define _CRT_SECURE_NO_WARNINGS 1
 #include<stdio.h>
 #include<stdlib.h>
 int Ribbit_num(int N)
 {
 	int num1 = 1;
 	int num2 = 1;
 	int num = 0;
 	int month = 0;
 	if (N == 1)
 	{
 		month = 1;
 	}
 	else
 	{
 		month += 1;
 		while (num <= N)
 		{
 			num = num1 + num2;
 			num1 = num2;
 			num2 = num;
 			month++;
 		}
 		if (N > num1&&N < num)
 		{
 			month++;
 		}
 	}
 	return month;
 }

 int main()
 {
 	int N = 0;
 	scanf("%d",&N);
 	int ret = Ribbit_num(N);
 	printf("%d", ret);
 	system("pause");
 	return 0;
 } 

测试结果:

方法二:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int Ribbit_num(int N)
{
	int num1 = 1;
	int num2 = 1;
	int num = 0;
	int month = 0;
	if (N == 1)
	{
		month = 1;
	}
	else
	{
		month += 2;
		while (num2 < N)
		{
			num = num1 + num2;
			num1 = num2;
			num2 = num;
			month++;
		}
	}
	return month;
}


int main()
{
	int N = 0;
	scanf("%d",&N);
	int ret = Ribbit_num(N);
	printf("%d", ret);
	system("pause");
	return 0;
}

测试结果:

猜你喜欢

转载自blog.csdn.net/melody_1016/article/details/83180571