每日一练:“五人分鱼”问题

在这里插入图片描述

1. 题目

  五人分鱼问题:A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。
  日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。
  B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。
  C、D、E依次醒来,也按同样的方法拿鱼。
  问他们至少捕了多少条鱼?

2. 解题思路

  把问题一般化,假如一共有 n个人分鱼。设原本有 x 条鱼,A拿走自己的一份后还剩 f ( x ) = n − 1 n ( x − 1 ) f(x)=\frac {n-1}{n}(x-1) f(x)=nn1(x1)条鱼,B拿走自己的一份后还剩 f ( f ( x ) ) = f 2 ( x ) f(f(x))=f^2(x) f(f(x))=f2(x)条鱼……n 个人各自拿走鱼后,剩下 f n ( x ) f^n(x) fn(x) 条鱼。
  其中比较重要一点的规律是总的鱼数-1,总是能被5整除。分鱼规律如下:
A: ( x − 1 ) / 5 (x-1)/5 (x1)/5
B: ( x − ( ( x − 1 ) / 5 ) − 1 ) / 5 (x-((x-1)/5)-1)/5 (x((x1)/5)1)/5
C: ( x − ( ( x − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − 1 ) / 5 ) − 1 ) / 5 (x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5 (x((x1)/5)((x((x1)/5)1)/5)1)/5
D: ( x − ( ( x − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − 1 ) / 5 ) − 1 ) / 5 ) − 1 ) / 5 (x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-1)/5 (x((x1)/5)((x((x1)/5)1)/5)((x((x1)/5)((x((x1)/5)1)/5)1)/5)1)/5
E: ( x − ( ( x − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − 1 ) / 5 ) − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − ( ( x − ( ( x − 1 ) / 5 ) − 1 ) / 5 ) − 1 ) / 5 ) − 1 ) / 5 ) − 1 ) / 5 (x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-1)/5)-1)/5 (x((x1)/5)((x((x1)/5)1)/5)((x((x1)/5)((x((x1)/5)1)/5)1)/5)((x((x1)/5)((x((x1)/5)1)/5)((x((x1)/5)((x((x1)/5)1)/5)1)/5)1)/5)1)/5

3. 代码实现

def find_minimum_fish():
    # 初始总鱼数为1
    x = 1
    
    # 不断尝试增加总鱼数,直到找到满足条件的值
    while True:
        # 每次循环重新初始化剩余鱼的数量为当前总鱼数
        remaining_fish = x
        
        # 模拟每个人的操作
        for _ in range(5):
            # 按照规定的方式分鱼,每次剩下4份
            remaining_fish =  (remaining_fish -1)*(4 / 5)
            
            # 如果剩余鱼的数量不能被5整除,说明不符合条件,跳出内循环
            if remaining_fish % 1 != 0:  # 修改此行为判断是否为整数
                break
        else:
            # 如果所有人都拿了一份鱼,返回当前的总鱼数
            return int(x)
        
        # 如果不符合条件,尝试下一个总鱼数
        x += 1

# 调用函数获取结果
result = find_minimum_fish()

# 打印结果
print(f"五人至少捕了{result}条鱼。")

4. 变种问题

4.1 问题描述

  有五个人捕到了一堆鱼,打算进行分配。规定如下:每个人依次取走鱼的四分之一,但最后一人不扔掉剩余的鱼。找到最小的初始鱼的数量,使得每个人都能平均分到整数条鱼。

4.2 代码实现

def find_minimum_fish_variant2():
    x = 1
    
    while True:
        remaining_fish = x
        
        for i in range(5):
            remaining_fish = (3 / 4) * (remaining_fish - 1) if i < 4 else (3 / 4) * remaining_fish
            
            if remaining_fish % 1 != 0:
                break
        else:
            return int(x)
        
        x += 1

result_variant2 = find_minimum_fish_variant2()
print(f"五人至少捕了{result_variant2}条鱼。")

4. 参考

https://www.runoob.com/python3/python-five-fish.html
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/208412.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode Hot100 31.下一个排列

题目&#xff1a; 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列…

软件测试-软件缺陷有哪些,一文贯彻到底

软件缺陷 软件缺陷&#xff1a;又称之为“Bug”。即计算机软件或程序中存在的某种破坏正常运行能力的问题、错误&#xff0c;或者隐藏的功能缺陷。 表现形式A 软件没有实现产品规格说明书所要求的功能模块。 表现形式B 软件中出现了产品规格说明指明不应该出现的错误。 表现…

WordPress:解决xmlrpc.php被扫描爆破的风险

使用WordPress的朋友都知道&#xff0c;一些【垃圾渣渣】会利用xmlrpc.php文件来进行攻击&#xff0c;绕过WP后台错误登录次数限制进行爆破。虽然密码复杂的极难爆破&#xff0c;但及其占用服务器资源。 方法一、利用宝塔防火墙&#xff08;收费版&#xff09; 一般可以直接使…

代码随想录算法训练营第五十二天【动态规划part13】 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

300.最长递增子序列 题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 求解思路 动规五部曲 1.dp数组及其下标定义&#xff1a; dp[i]表示包括i以前的以nums[i]结尾的最长递增子序列的长度 2.状态转移方程&#xff1a; 位置i的最长升序…

如何解决SSL证书部署后未生效或网站显示不安全

本文介绍SSL证书部署后未生效或网站显示不安全的排查方法。 浏览器提示“您与此网站建立的连接不安全” 浏览器提示“无法访问此页面” 浏览器提示“这可能是因为站点使用过期或者不全的TLS安全设置” 浏览器提示“此页面上部分内容不安全&#xff08;例如图像&#xff09;”…

网络类型解析(基础):探索通信世界的多样面貌

在当今数字化时代&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。从个人设备之间的直接通信到全球范围的数据传输&#xff0c;不同类型的网络为我们提供了多种连接方式和通信选择。透过对这些网络类型的解析&#xff0c;我们将更好地理解它们的特点、优势和适用场…

Excel导入操作

<template><el-dialogwidth"500px"title"员工导入":visible"showExcelDialog"close"$emit(update:showExcelDialog, false)"><el-row type"flex" justify"center"><div class"upload-e…

C++stack

目录 1.什么是stack 2.容器适配器 3.stack的使用 top push pop 4.模拟实现stack 1.什么是stack 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作。(后进先出) 2. stack是作为容…

git的版本控制流程

1、git是一款版本控制工具 例如我们常用的淘宝&#xff0c;每次升级&#xff0c;版本号就会加一。那么我们怎么控制版本号呢&#xff1f; --使用git。 2、最常使用的git指令 git add . 暂存 git commit -m"***" 提交到本地 git pull 将远程仓库代码下拉到本地 git …

Python知识碎片补充【侯小啾python领航班系列(十四)】

Python知识碎片补充【侯小啾python领航班系列(十四)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

c#学习相关系列之as和is的相关用法

一、子类和父类的关系 public class Program{static void Main(string[] args){Animal animal new Dog();// Dog dog (Dog)new Animal(); 编译成功&#xff0c;运行报错Dog dog (Dog)animal;Dog dog new Dog();Animal animal dog; //等价于Animal animal new Dog();}}pub…

应用于智慧社区的AI边缘计算盒子+AI算法软硬一体化方案

据统计&#xff0c;全国大约有45W个小区&#xff0c;监控高空抛物、治理乱扔垃圾、人员管理、烟火检测、占道、人流量检测、车型检测等&#xff1b;营造社区安全等需求跟每一个参与者息息相关&#xff0c;据法院公开资料显示&#xff0c;每年有1000宗以上跟高空抛物有关的各类案…

0X04

看到一道有趣的misc题 misc签到题 打开后啥都没有&#xff0c;全选后发现每一行有空格&#xff0c;数了一行发现空格数量转ascil码后是f&#xff0c;猜测都如此&#xff0c; 后面就可以交个脚本了&#xff0c;统计之后转换成ascii from Crypto.Util.number import long_to_b…

【Linux--进程控制】

目录 一、进程等待1.1进程等待方法1.2获取子进程status 二、进程替换2.1单进程版本--最简单得程序替换2.2 进程替换得原理2.3 多进程版本--验证各种程序替换接口2.4 总结 一、进程等待 1.1进程等待方法 问题1&#xff1a;进程等待是什么&#xff1f; 通过系统调用wait/waitpi…

算法:笛卡尔平面坐标系上,若干连接点形成线,剔除距离小于阈值的点,Kotlin

算法&#xff1a;笛卡尔平面坐标系上&#xff0c;若干连接点形成线&#xff0c;剔除距离小于阈值的点&#xff0c;Kotlin const val THRESHOLD 0.6f //距离小于这个点将被剔除。data class Point(val x: Float, val y: Float)fun removeNearbyPoint(points: List<Point>…

【数电笔记】逻辑代数的基本定律、常用公式

说明&#xff1a; 笔记配套视频来源&#xff1a;B站 逻辑代数的基本定律 1. 常量间的运算 2. 逻辑变量与常量的运算 3. 与普通代数相似的定律 4. 摩根定律&#xff08;反演律&#xff09; 5. 等式证明方法例题 逻辑代数的常用公式 1. 吸收律 2. 冗余律 3. 示例应用 4. 关于异…

conda 安装指定Version的指定Build

入下图&#xff0c;我想装cudnn的7.6.5的指定Build版本cuda10.0_0 应该使用如下命令&#xff1a; mamba install cudnn7.6.5cuda10.0_0 没有mamba用conda install也可以

快手获客技巧:轻松获取高转化率的潜在客户!

**一、引言** 随着互联网的发展&#xff0c;越来越多的企业开始关注短视频平台&#xff0c;尤其是快手。作为中国最大的短视频平台之一&#xff0c;快手拥有庞大的用户群体和丰富的视频内容。通过掌握快手获客技巧&#xff0c;企业不仅可以获取更多潜在客户&#xff0c;还能提高…

Flash学习

FLASH介绍 FLASH是常用的&#xff0c;用于存储数据的半导体器件&#xff0c;它具有容量大&#xff0c;可重复擦写&#xff0c;按“扇区/块”擦除、掉电后数据可继续保存的特性。 常见的FLASH有NOR FLASH和NAND FLASH。 NOR和NAND是两种数字门电路&#xff0c;可以简单地认为F…

简述MyBatis、MyBatis-Plus、以及MyBatis-Plus的简单运用

什么是MyBatis MyBatis是一个开源的Java持久层框架&#xff0c;用于简化与关系型数据库的交互。它通过将SQL语句与Java代码进行分离&#xff0c;提供了一种优雅的方式来处理数据库操作。 MyBatis的核心思想是将SQL语句与Java方法进行映射&#xff0c;使得开发人员可以通过配置…