题解 | #统计每个月兔子的总数#
统计每个月兔子的总数
http://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395
解析:
将兔子分成三类:小,中,大
所以每个月的兔子数量为
月 1 2 3 4 5 6 7 8 9 10 11 12
小 1 0 1 1 2 3 5 8 13 21 34 55
中 0 1 0 1 1 2 3 5 8 13 21 34
大 0 0 1 1 2 3 5 8 13 21 34 55
分析:每个月兔子的总数都为前两个月兔子的总和
这是斐波那契数列(兔子问题)。
方法1:python 循环数列法。
import sys
for s in sys.stdin:
month = int(s)
L = []
for i in range(month):
if i <2:
L.append(1)
else:
L.append(L[i-1]+L[i-2])
print(L[-1])方法2:python
while True:
try:
n = int(input())
a = 1
b = 1
for i in range(2,n):
res = a + b
a = b
b = res
print(res)
except:
break方法3: C
#include <stdio.h>
int main()
{
int mouth;
while(scanf("%d",&mouth)!=EOF){
int moutha = 1;
int mouthb = 1;
int sum;
if(mouth<=2)
printf("1");
int i = 3;
for(i;i<=mouth;i++){
sum = moutha + mouthb;
mouthb = moutha;
moutha = sum;
}
printf("%d\n",sum);
}
return 0;
}