#include<stdio.h>
int f[15];
bool jos(int ,int );
int main()
{
 
int i,j,k,m,n;
 
for(i=1;i<14;i++)
  
for(j=i;;j++)
   
if(jos(i,j))
   {
    f[i]
=j;
    
break;
   }
 
while(scanf("%d",&n),n)
  printf(
"%d\n",f[n]);
 
return 0;
}
bool jos(int n,int m)//n代表每一边的人数,m代表所报的数
{
 
int start=0,end=n-1,killed;
 
int i,j;
 
bool flag=true;
 
for(i=2*n;i>n;i--)//从头进行模拟
 {
  killed
=(m-1)%i;//i代表剩余的人数
  if((killed<=end)&&(killed>=start))
  {
   flag
=false;
   
break;
  }
  start
=((start-m)%i+i)%i;//按照那个编号变化公式重新进行赋值
  end=((end-m)%i+i)%i;//加上i,再%i的目的是保证它非零
 }
 
return flag;
}

相关文章:

  • 2022-12-23
  • 2021-09-15
  • 2022-02-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-24
  • 2022-12-23
  • 2022-12-23
  • 2022-02-04
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案