题解 | #统计每个月兔子的总数#
统计每个月兔子的总数
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; }