原文:http://blog.acmj1991.com/?p=699
题意:有2*k个人按照约瑟夫环的规则往外踢人,问当m为多少时能保证后k个人都在前k个人之前被踢
思路:暴力打表
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
bool jo(int k,int m)
{
int len=2*k,s=0;
while(len>k){
s=(s+m-1)%len;
if(s<k)return false;
len--;
}
return true;
}
int main()
{
int n,f[15];
for(int k=1;k<14;k++)
for(int m=k+1;1;m+=(k+1))
if(jo(k,m)){
f[k]=m;
break;
}else if(jo(k,m+1))
{
f[k]=m+1;
break;
}
while(scanf("%d",&n)&&n)
printf("%d\n",f[n]);
}