此题为Josephus Problem,不一样的地方在于刚开始第一个要先砍掉,所以要算N个点可以当作有N-1个点来算,只是原本最后的点13需减1变成12,再来因为编号从0开始编比较好算,所以真正最后的点会变成11.
可用递回的方式来想这题,原本有N个人要数m个人来杀,杀完后,以他的下一个为0又重新编号,则表示原本的号码都被减了m,若比m小的,减完后因为不能为负的,要加回一个N-1.如果要反回去求原本的号码,那么就是要加m对N-1取余数.经过这样重新编号就会变成N-1个人要数m个人来杀的问题,就这样一直缩小题目范围到1个人要数m个人来杀,那么位移号码完后的0号一定就是存活者,要推回这个0号是原本N个人的哪一个号码,就再返回去推出2个人要数m个人来杀的时候它是几号,那么根据刚刚推导的,他就是(0+m)%2号,接着再推回3人,4人......一直到N人,即可得解.
N--;