//约瑟夫问题
#include<stdio.h>
#include<stdlib.h>
#define MAX_NUM 300
int aLoop[MAX_NUM+10];
main()
{
int n,m,i;
while(1)
{
scanf("%d%d",&n,&m);
if(n==0) break;
for(i=0;i<n;i++)
aLoop[i]=i+1;
int nPtr=0;
for(i=0;i<n;i++)
{
int nCounted=0;
while(nCounted<m)
{
while(aLoop[nPtr]==0)
nPtr=(nPtr+1)%n;
nCounted++;
nPtr=(nPtr+1)%n;
}
nPtr--;
if(nPtr<0) nPtr=n-1;
if(i==n-1)
printf("%d\n",aLoop[nPtr]);
aLoop[nPtr]=0;
}
}
return 0;
}
约瑟夫问题
最新推荐文章于 2019-09-12 09:18:00 发布