zoj1088

来源:互联网 发布:电脑记账软件 编辑:程序博客网 时间:2024/05/16 10:00

约瑟夫环问题

#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>int a[155];int num(int n){  int i,j;  int count;  int mark;  int key;  for(i=2;;i++)  {    for(j=0;j<n;j++)    {      a[j]=1;    }    count=1;j=0;    a[0]=0;    while(count<n-1)    {      mark=0;key=1;      while(mark<i)      {        while(a[(j+key)%n]==0)        {          key=key+1;        }        mark++;        key++;      }      while(a[(j+key-1)%n]==0)      {        j++;      }      j=(j+key-1)%n;      a[j]=0;      count++;    }    if(a[1]!=0)    {       break;    }  }  return i;}int main(){  int n;  while((scanf("%d",&n)!=EOF)&&(n!=0))  {    printf("%d\n",num(n));  }  return 0;}


0 0
原创粉丝点击