简单模拟主要这个输出有点蛋疼
自己代码太丑
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
int n,k,m;
int num[111];
int cont[111];
int ans[111];
int ans2[111];
while(cin>>n>>k>>m&&n!=0&&k!=0&&m!=0)
{
memset(num,0,sizeof(num));
memset(cont,0,sizeof(cont));
memset(ans,0,sizeof(ans));
memset(ans2,0,sizeof(ans2));
int sum=1;
int sum2=1;
int t1=0;
int t2=n-1;
int ssum=0;
while(1)
{
int k1=0;
while(1)
{
while(cont[t1]==1)
{
t1=(t1+1)%n;
}
k1++;
if(k1==k)
break;
t1=(t1+1)%n;
}
int k2=0;
while(1)
{
while(cont[t2]==1)
{
t2=(t2-1+n)%n;
}
k2++;
if(k2==m)
break;
t2=(t2-1+n)%n;
}
if((t2+1)!=(t1+1))
{
ans[sum++]=t1+1;
cont[t1]=1;
ans2[sum2++]=t2+1;
cont[t2]=1;
ssum+=2;
if(ssum>=n)
break;
}
else
{
ans[sum++]=t1+1;
ans2[sum2++]=t1+1;
cont[t1]=1;
ssum+=1;
if(ssum>=n)
break;
}
}
for(int i=1;i<sum;i++)
{
if(i!=1)
printf(",");
if(ans[i]!=ans2[i])
{
printf("%3d%3d",ans[i],ans2[i]);
}
else
printf("%3d",ans[i]);
}
printf("\n");
}
return 0;
}