#include <stdio.h>
#include <stdlib.h>
int main()
{
int k,m,a,i,j,s[15],flag,t;
for(i=1;i<=13;i++){
for(j=i+1;;j++){
//a=i;
flag=0;
t=0;
for(k=2*i;k>=i+1;k--){
t=(t+j-1)%k;
if(t<=i-1){
flag=1;
break;
}
}
if(flag==0){
s[i]=j;
break;
}
}
}
while(scanf("%d",&k)){
if(!k)break;
printf("%d\n",s[k]);
}
return 0;
}
意思就是有n个人,找一个数k,让第k个人死,然后从死的人开始再找第k个杀死,如此反复,最后要让后n/2个人先死,而前n/2个人都活着
模拟一下这个过程,每杀一个人前共有k人,每次杀第j个人,每轮记录目前位置,杀一个人k就减一,中间如果有位置在前k/2就让j+1,重新开始循环计算