1.问题描述
小明将养的一缸金鱼分5次出售:第1次卖出全部的一半加1/2条;第2
次卖出余下的三分之一加1/3条;第3次卖出余下的四分之一加1/4条;第4
次卖出余下的五分之一加1/5条;最后卖出余下的11条。试编程求出原来
鱼缸中共有多少条金鱼。
2.问题分析
依题意可知,金鱼是分5次出售的,每次卖出的方式都相同,因此可
以用表达式将每次卖鱼后剩下的条数计算出来。
由:
第1次卖出全部的一半加1/2条;
第2次卖出余下的三分之一加1/3条;
第3次卖出余下的四分之一加1/4条;
第4次卖出余下的五分之一加1/5条。
可推出:
第j次卖出余下的(j+1)分之一加1/(j+1)条。
假设第j次卖鱼前金鱼总数为x,则第j次卖鱼后鱼缸中还剩下金鱼的条
数为x-(x+1)/(j+1)。
又由于“最后卖出余下的11条”,因此第4次卖鱼后鱼缸中剩下的金鱼
条数为11。
因为金鱼只能整条进行出售,因此x+1必然能够整除j+1。
可以从23开始试探x的取值,由于x值必为奇数,因此步长取2。
3.确定程序框架
程序流程图如图2.3所示。
4.完整的程序
根据上面的分析,编写程序如下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: 出售金鱼
if __name__=="__main__":
flag = 0 # flag作为控制标志
i = 23
while flag == 0:
j = 1 # j表示卖鱼的次数
x = i # x表示每次卖鱼的条数
while j <= 4 and x >= 11:
if (x + 1) % (j + 1) == 0: # 判断x + 1是否能整除j + 1
x -= (x+1)//(j+1)
else:
x = 0
break
j += 1
if j == 5 and x == 11:
print("原来鱼缸中共有%d条金鱼." %i)
flag = 1 # 求出结果,flag置为1,退出试探
i += 2

5.运行结果
在PyCharm下运行程序,结果如图2.4所示。由输出结果可知,原来鱼
缸中共有59条金鱼。

100个python算法超详细讲解:出售金鱼相关推荐

  1. 100个python算法超详细讲解:搬山游戏

    [100个python算法超详细讲解]@谷歌学术 1.问题描述 设有n座山,计算机与人作为比赛的双方,轮流搬山.规定每次搬 山数不能超过k座,谁搬最后一座谁输.游戏开始时,计算机请人输入 山的总数n和 ...

  2. 100个python算法超详细讲解:平分7筐鱼

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 2.乙.丙三位渔夫出海打鱼,他们随船带了21只箩筐.当晚返航时, 他们发现有7筐装满了鱼,还有7筐装了半筐鱼,另外7筐是空的,由于他们 ...

  3. 100个python算法超详细讲解:邮票组合

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小 面值邮票中的一张或几张的组合,可以满足不同邮件的不同邮资.现 在,邮局有4种不 ...

  4. 100个python算法超详细讲解:递归解决年龄问题

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁.问 第4个人多少岁,他说比第3个人大2岁.问第3人多少岁,他说比第2个 人大2 ...

  5. 100个python算法超详细讲解:谁是窃贼

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 警察审问4名窃贼嫌疑犯.现在已知,这4人当中仅有一名是窃 贼,还知道这4个人中的每个人要么是诚实的,要么总是说谎. 下面是这4个人给警察 ...

  6. 100个python算法超详细讲解:抢30游戏

    [100个python算法超详细讲解]@谷歌学术 1.问题描述 由两个人玩"抢30"游戏,游戏规则是:第一个人先说"1"或"1,2",第 二 ...

  7. 100个python算法超详细讲解:卡布列克常数

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 对于任意一个4位数n,进行如下的运算: 1)将组成该4位数的4个数字由大到小排列,形成由这4个数字构 成的最大的4位数. 2)将组成该4 ...

  8. 100个python算法超详细讲解:孪生素数

    [100个python算法超详细讲解@谷哥技术] 1.问题描述 本节要研究孪生素数的问题,先来看看什么是孪生素数. 所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经 近得不能再近了,如 ...

  9. 100个python算法超详细讲解:狼追兔子

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 一只兔子躲进了10个环形分布的洞中的某一个.狼在第一个洞中 没有找到兔子,就隔一个洞,到第三个洞中去找:如果没有找到,就 隔两个洞,到第 ...

  10. 100个python算法超详细讲解:猴子吃桃

    [100个python算法超详细讲解]@谷哥技术 1.问题描述 一个猴子摘了一些桃子,它第一天吃掉了其中的一半然后再多吃了 一个,第二天照此方法又吃掉了剩下桃子的一半加一个,以后每天如 此,直到第十天 ...

最新文章

  1. 使用 HTML5 时如何改进移动 Web 应用开发
  2. 大数据实验报告总结体会_大数据挖掘流程及方法总结
  3. linux进入text目录,Linux文件和目录操作命令 | Soo Smart!
  4. 基于知识的推荐系统(案例学习)
  5. Nginx-location配置指南
  6. 计算机怎么取消u盘启动程序,计算机设置U盘自动启动程序| U盘自动播放设置
  7. Telnet三步完成连接(简短版)
  8. arraylist扩容是创建新数组吗 java_Java 基础数据结构分析
  9. 句句真研—每日长难句打卡Day18
  10. mysql复制(高可用架构方案的基础)
  11. 计算机考试祝福,考试前说的祝福语汇编35句 参加考试前的祝福语
  12. 什么是哑终端,终端模拟器
  13. 小米MIUI线刷包cust.img、system.img精简教程(二)
  14. 可视化常见绘图(四)柱状图
  15. Utgard连接OPC Server常见故障码及解决方案
  16. torch.cat() 和 torch.stack()
  17. Web3 全栈开发指南
  18. Home Assistant入门1-1:在树莓派上安装官方系统
  19. SVA——断言属性之序列(sequence与property的用法)
  20. 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

热门文章

  1. 【LaTex常用命令集】数学比较符号,字体形状,各种箭头+对号+叉号
  2. 【设计模式(九)】结构型模式之装饰器模式
  3. AcWing 660. 零食
  4. git 提交代码报错vue-cli-service lint found some errors.
  5. 利用CF搭建Github下载代理
  6. before和after怎么区分_CSS 巧用 :before和:after
  7. 只有生病的人,才懂得健康的可贵
  8. JAVA EE 7 SDK Tutorial分析
  9. HP Veer刷机教程
  10. 比赛推送 图像/表格/CV/NLP,多线程开启