#include <stdio.h>
#define MAXN 20
void CountOff( int n, int m, int out[] );
int main()
{
int out[MAXN], n, m;
int i;
scanf("%d %d", &n, &m);
CountOff( n, m, out );
for ( i = 0; i < n; i++ )
printf("%d ", out[i]);
printf("\n");
return 0;
}
/* 你的代码将被嵌在这里 */
void CountOff( int n, int m, int out[] ){
int i,k=1,a[n];
for(i=1;i<=n;i++){
a[i]=i;
} int s=1,q=1;
while(1){
if(a[k]!=0)a[k]=s;
else s--; //保证当a[k]==0时s仍然能够不变。
if(s==m){s=0;a[k]=0;//当s==m时s置0重新开始,关键是使得a[k]置0,它能作为判断语句。
out[k-1]=q;q++;//k-1是根据题意。
if(q==n+1)break;}//跳出。
if(k==n){k=0;} //重新开始。
k++;
s++;
}
}
这是一道很有意思的题目,它涉及到了约瑟夫环问题,可以利用数学方法找规律的方法,我才疏学浅不会那那种方法。