例题4-3
https://vjudge.net/problem/UVA-133
#include<iostream>
#pragma warning(disable:4996)
using namespace std;
int main() {
char s[10];
int n, k, m; int vis[1045] = {};//vis[0]=0;
while (cin >> n >> k >> m && (n || k || m)) {
for (int i = 1; i <= n; ++i)
vis[i] = 1;
int A = 0, B = 0;
int cnt = n;
while (cnt) {
if (cnt != n) cout << ",";
int K = k, M = m;
while (K) {
A = (A + 1) % (n+1);
if (vis[A]) K--;
}
while (M) {
B = (B + n) % (n + 1);//-1+n+1=n
if (vis[B]) M--;
}
if (A != B) {
cnt -= 2;
vis[A] = vis[B] = 0;
printf( "%3d%3d", A, B);
}
else {
--cnt;
vis[A] = 0;
printf( "%3d", A);
}
}
cout << endl;
}
}