/* Remaining men are x[0],x[1],...,x[m-1]. Executioner is looking at x[e]. Memory pictures: m e x[0] x[1] x[2] x[3] x[4] x[5] x[6] 7 0 1 2 3 4 5 6 7 7 1 1 2 3 4 5 6 7 7 2 1 2 3 4 5 6 7 print 3 6 2 1 2 4 5 6 7 6 3 1 2 4 5 6 7 6 4 1 2 4 5 6 7 print 6 5 4 1 2 4 5 7 5 0 1 2 4 5 7 5 1 1 2 4 5 7 print 2 4 1 1 4 5 7 4 2 1 4 5 7 4 3 1 4 5 7 print 7 3 0 1 4 5 3 1 1 4 5 3 2 1 4 5 print 5 2 0 1 4 2 1 1 4 2 0 1 4 print 1 1 0 4 1 0 4 1 0 4 print 4 0 0 */ #include int main(void) { int x[100]; int m; int c; int e; int i; scanf("%d",&m); scanf("%d",&c); if (m > 100) m = 100; /* avoid buffer overflow */ for (i = 0;i < m;++i) x[i] = i + 1; e = 0; while (m > 0) { /* men are still alive */ for (i = 1;i < c;++i) { ++e; if (e >= m) e = 0; } printf("%d\n",x[e]); --m; for (i = e;i < m;++i) x[i] = x[i + 1]; if (e >= m) e = 0; } return 0; }