题解 | #统计每个月兔子的总数#

统计每个月兔子的总数

http://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395

import sys
import math

'''
用an表示第n个月生完之后的兔子总数
用an(ns)表示第n个月能生的兔子,用an(bns)表示第n个月还不能生的兔子

能生的兔子每兔生一个,贡献自身1倍的数量,不能生的兔子不加数量,因此:
an = an(ns)x2 + an(bns)

过3个月起才能开始生,因此,第n个月能生的兔子就是两个月之前的兔子们;第n个月不能生的兔子是两个月前到本月之间出生的兔子,也就是上个月出生的兔子:
an(ns) = a(n-2)
an(bns) = a(n-1)-a(n-2)

an = a(n-2)x2+a(n-1)-a(n-2)
an = a(n-2)+a(n-1)
即为斐波那契数列
'''

def caculateRabbit(month):
    a = 1
    b = 1
    if month<1:
        print("数据小于1,无法计算")
        return -1
    if month==1 or month==2:
        return 1
    for n in range(month-2):
        temp = a
        a = b
        b = temp + a
    return b

if __name__=="__main__":
    for line in sys.stdin:
        n = int(line)
        print(caculateRabbit(n))
全部评论

相关推荐

看网上风评也太差了
投递万得信息等公司9个岗位 >
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务