约瑟夫环问题

1.输出出圈人序号

5078ffde02904f21bf243c1705646179.png

 73aa277c057e48479d4899bfbdb6f0b3.png

 2.猴子选大王(输出最后一个剩余的猴)

bf2015b5c1eb4f4e93f00ce741fbb07a.png

126aaafd80994eb49117a91b84267916.png528d5c9072bd44b6b010892f2ec2ca0a.png 这是基于约瑟夫环问题的数学推导思路。假设初始有  n  个猴子(对应代码里输入的第一个数,也就是猴子总数),每次报数到  m  (对应代码里输入的第二个数,报数的数字)的猴子出圈。
 
可以通过逐步推导来理解,当只有1只猴子时,那这只猴子就是最后的“猴王”,编号为0。当有2只猴子时,经过一轮报数(报数到  m  的出圈),剩下那只猴子的编号就可以通过计算  (0 + m) % 2  得出(这里的0是上一轮(只有1只猴子时)剩下猴子的编号)。
 
随着猴子数量不断增多,比如有  z  只猴子时( z  从2逐步递增到  n ),每一轮都可以根据上一轮剩下猴子的编号按照  (上一轮编号 + m) % 当前猴子总数  这样的规律来计算这一轮剩下猴子的编号,不断递推下去,最后得出的  result  就是经过多轮报数后剩下那只猴子(猴王)在初始  n  只猴子中的编号。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值