话说,入学考试碰到了相似的题
/**
* 10.有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。
* 问:最后剩下的是100人中的第几个人?
*
* 思路:
* 方法一:标准循环解法:用一个ArrayList存储100个数,从1开始数,数到14的倍数,集合中对应的元素被移除,
* 以此类推,直到剩下一个元素为止,这个元素的数字就为题目的答案。
* 方法二:约瑟夫标准循环非递归解法:假设总人数为n-1时从第1个开始数剩下的是第s个;总人数增到n个人(增加
* 1个人到最后):提前14个位置开始数,增加的那个人第一个循环就退出了,剩下的还是第s个人;即从第
* -14个人(因为是一圈,不包含0)开始数,剩下的是第s个人,那么从第一个人开始数,剩下的是第s+14
* 个人;以此类推。
*/ |