题目链接如下:
我的代码如下:
#include <cstdio>
const int maxN = 20;
int N, k, m, tot, u, v;
int circ[maxN];
int main(){
while(scanf("%d %d %d", &N, &k, &m) == 3 && N){
for(int i = 0; i < N; ++i){
circ[i] = i + 1;
}
tot = N;
u = -1;
v = N;
while(tot){
for(int i = 0; i < (k % tot == 0 ? tot : k % tot); ++i){
do{
u++;
if(u == N){
u -= N;
}
} while(!circ[u]);
}
for(int i = 0; i < (m % tot == 0 ? tot : m % tot); ++i){
do{
v--;
if(v == -1){
v += N;
}
} while(!circ[v]);
}
if(u == v){
tot--;
printf("%3d%s", circ[u], tot == 0 ? "\n" : ",");
} else{
tot -= 2;
printf("%3d%3d%s", circ[u], circ[v], tot == 0 ? "\n" : ",");
}
circ[u] = 0;
circ[v] = 0;
}
}
return 0;
}