牛客网学习笔记(HJ37统计每个月兔子的总数)

195 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

题目来自牛客网的华为机试题库,本题目为简单题

HJ37 统计每个月兔子的总数

描述
有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。 假如兔子都不死,问第n个月的兔子总数为多少?

输入描述:
输入一个int型整数表示第n个月
输出描述:
输出对应的兔子总数

代码

n = int(input())
re = [1,1]
if n < 2:
    print(re[n-1])
for i in range(2,n):
    re.append(re[i-2]+re[i-1])
print(re[n-1])

解析

这道题的代码实现很简单,难点在于理清楚生兔子的数量关系,可以算作一个非常简单的数学题思维题吧。因为我是学数学相关的所以觉得比较简单,很喜欢写这一种类型的题啊,哈哈哈哈......

兔子不会死,所以不需要考虑数量会减少,直接加新生小兔子的量就可以了
具体步骤
1.两个月以内不会有新的小兔子
2.因为每个兔子第三个月都可以开始生小兔子,所以新生的小兔子数等于两个月前的所有兔子数
3.把每个月的兔子数保存在数组里,两个月前兔子数和上个月已有的兔子数相加就是这个月的兔子总数
4.加到要求的月数就可以直接输出了
对于我来说想到使用数组保存每个月的兔子数,然后直接用倒数第二个数和倒数第一个数相加是比较难想到的,我自己想的话,会直接设三个变量,来回赋值,又笨又容易错。通过这道题也算是加强了我使用数组作为解题辅助的习惯吧!