33人围成一圈,从1至N开始顺时针一直递增报数;报N者退出,下一位从1开始重新报数。当N为2时,最后留下者是第几人。假设最先报数的人编号是1,其他人编号按顺时针方向递增。( )-笔试面试资料

这是qklbishe.com第4807 篇笔试面试资料
提供答案分析,通过本文《33人围成一圈,从1至N开始顺时针一直递增报数;报N者退出,下一位从1开始重新报数。当N为2时,最后留下者是第几人。假设最先报数的人编号是1,其他人编号按顺时针方向递增。( )-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

33人围成一圈,从1至N开始顺时针一直递增报数;报N者退出,下一位从1开始重新报数。当N为2时,最后留下者是第几人。假设最先报数的人编号是1,其他人编号按顺时针方向递增。( )
33人围成一圈,从1至N开始顺时针一直递增报数;报N者退出,下一位从1开始重新报数。当N为2时,最后留下者是第几人。假设最先报数的人编号是1,其他人编号按顺时针方向递增。( ) Chameleons
先求余下几人:(33 % N)就表示余下了几人,而余数总是小于N的,当前是1人
然后求退出者几人:(33/N)就表示进行了几轮完整报数,最后一个人退出,当前是16
那么留下者就是余下人数(33%N = 1)+ 完整报数余下人数((N-1)(33/N) = 16)=17人,这样似乎并不对,因为是链式(计算的是直线队列),所以可以无限循环报数,因为有退出者,依据规则,从而最终一定会结束退出也就结束报数,临界条件是少于N人,由于每次只退出1人,所以最后结果是N-1人剩下。

所以链式的要一轮轮去计算(编号1-33),然后去找规律:
第一轮:如上,剩下1,3,5…31,33,且33号是最后一个编号为1未退出,总共剩17人
第二轮:剩下3,7,11…31。总共应该剩(N-1)从2开始报数+其余(17-(N-1))同上,那么N-1人中剩下N-1-1=0人,后面的剩下16人参与从1报数,根据公式剩下8人,且最后一人报数为N退出了,也就是说下一轮从1开始。
第三轮:还剩下8人,可以被N整除,所以第一个人不会被退出,直至剩下的人不是N的倍数,第一个人才会被退出,但8=2*2*2,最后剩下的是第二轮剩下的第一个人,也就是3号(第三个人)

今天 09:56:48 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 33人围成一圈,从1至N开始顺时针一直递增报数;报N者退出,下一位从1开始重新报数。当N为2时,最后留下者是第几人。假设最先报数的人编号是1,其他人编号按顺时针方向递增。( )-笔试面试资料

提供最优质的资源集合

立即查看 了解详情