PKU1012 约瑟夫问题
题意: 2*k个人围成一个圈,前k个人为好人,后k个人为坏人,要求:每查m个人,并将第m个人杀掉,当杀第一个好人时坏人已全部杀光,输出此时m的值
分析:先引入Joseph递推公式,设有n个人(0,...,n-1),数m,则第i轮出局的人为f(i)=(f(i-1)+m-1)%(n-i+1),f(0)=0;
依次我们可以来做测试,只要前k轮中只要有一次f(i)<k则此m不符合题意。
接下来我们考察一下只剩下k+1个人时候情况,那么依题意则这一轮出局的人要么在上一轮出局人的左边,要么就在右边,则必有m%(k+1)==0或1
注:必须打表,否则超时