【Python】以不定条件下兔子总数计算为例-Python中对数量规律问题的思考与延展
来源:互联网 发布:php加密授权 编辑:程序博客网 时间:2024/04/30 03:36
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
Examination Problem
看过前面文章的网友会发现,此题似乎在前面已经写过,并且在另一节素数筛选,博主还为了探寻一下不同语言的编程效率问题,特意列举了多种语言如C/C++/Python/Java/Php/C#/Pascal/Javascript/Go/,发现语言之间存在一种联系,那就是思考的方式是一样的,只不过表达的形式不同。
先把原题挂出来:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,问前24个月每个月的兔子总数为多少? 【其实这道题就是分析问题然后发现数列之间存在的fibonacci关系,但是不妨扩展一下思路,修改一下假设条件努力向实际情况靠拢进行数学建模,兔子是有寿命的,寿命符合一定的函数分布{这里就不深入讨论},兔子生小兔子的时间倒是基本固定,这个所以这个可以假设,一旦模型建立,只需要修改数字即可,下面我们就做一点小思考,假如第4个月才生小兔子呢,很明显此时不再满足fibonacci关系,那么我们又该解决问题呢?】
so,挂出new problem,有一对兔子,从出生后第4个月起每个月都生一对兔子,小兔子长到第4个月后每个月又生一对兔子,假如兔子都不死,问前24个月每个月的兔子总数为多少?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Analysis
- 首先我们先手写列出兔子数量规律,最原始也最有效:
'''问题分析:11(1) -211(2) -211(3) -211(4) 11(1) -411(5) 11(2) 11(1) -611(6) 11(3) 11(2) 11(1) -811(7) 11(4) 11(3) 11(2) 11(1) 11(1) -1211(8) 11(5) 11(4) 11(3) 11(2) 11(1) 11(1) 11(1) -16...
c- 好,观察完上式我们总结一下:
- 1.以每4个月为一次界,凡是活过了4个月的兔子往后每个月都会生出小兔子
- 2.以新出生的小兔子在过了4个月以后又会循环第一步
- 所以有如下规律总结:
..<pre name="code" class="python">...兔子总数的规律总结如下:1. 4 个月以内时,兔子总数为 22. 4 - 7 月时,兔子总数为 (i-2)*23.超过 4 个月时,兔子总数为 A2 + (i-5)*2 【i表示月数】
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Program
"""File: example11.py:Time:Created on 2016-08-31 23:49:21Author: Sure"""#!/usr/bin/python# -*- coding: UTF-8 -*-import timeprint('当前时间:')print ( time.strftime( ' %Y-%m-%d %H:%M:%S',time.localtime(time.time()) ) )A1 = 1A2 = 1for i in range(1 , 25): if i < 4: print("第 %d 月,兔子总数为%10d" %(i,A1+A2) ) elif 3 < i < 7: A2 = (i-2)*2 print("第 %d 月,兔子总数为%10d" %(i,A2)) else: A2 = A2 + (i-5)*2 print('第 %d 月,兔子总数为%10d' %(i, A2) )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Results
当前时间: 2016-09-03 16:55:38第 1 月,兔子总数为 2第 2 月,兔子总数为 2第 3 月,兔子总数为 2第 4 月,兔子总数为 4第 5 月,兔子总数为 6第 6 月,兔子总数为 8第 7 月,兔子总数为 12第 8 月,兔子总数为 18第 9 月,兔子总数为 26第 10 月,兔子总数为 36第 11 月,兔子总数为 48第 12 月,兔子总数为 62第 13 月,兔子总数为 78第 14 月,兔子总数为 96第 15 月,兔子总数为 116第 16 月,兔子总数为 138第 17 月,兔子总数为 162第 18 月,兔子总数为 188第 19 月,兔子总数为 216第 20 月,兔子总数为 246第 21 月,兔子总数为 278第 22 月,兔子总数为 312第 23 月,兔子总数为 348第 24 月,兔子总数为 386
0 0
- 【Python】以不定条件下兔子总数计算为例-Python中对数量规律问题的思考与延展
- 兔子的总数问题
- 时间规模为nlogn的数列逆序对数量计算
- 《Python入门经典 以解决计算问题为导向的Python编程实践》Lesson1
- 《Python入门经典 以解决计算问题为导向的Python编程实践》Lesson2
- Python入门经典 以解决计算问题为导向的Python编程 待完善
- Python统计多个Powerpoint文件中幻灯片总数量
- 在计算器中如何计算以2为底3的对数 log 2 3
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21...
- 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,
- 递归算法问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不会死。问: 第20个月的兔子总对数为多少?(提示:先分析兔子的增长规律)
- Python While循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: while 判断条件:
- 兔子出生总数问题
- 用Python实现数字密码组合的总数计算
- 打印2 – 100之间数字的自然对数与以10为底的对数
- python常用统计量的计算
- Python中用于计算对数的log()方法
- Python的不定参数
- 试水Fragment(4)-重要的生命周期
- Linux命令基础
- 积木
- [23] Vijos P1781 同余方程(数论)
- 开发SpringMVC应用的步骤
- 【Python】以不定条件下兔子总数计算为例-Python中对数量规律问题的思考与延展
- thymeleaf 教程
- 和为指定数的组合个数
- JZOJ 4743 积木
- 保护模式下,读写大地址内存 & 从32位保护模式跳回16位实模式
- javascript基本语法笔记
- prim有意思。。。
- Eclipse编辑器基本设置
- 编程之美读书笔记-最大公约数问题