用队列模拟就好了
代码如下:
#include<cstdio>
#include<iostream>
#include<queue>
#include<cmath>
#include<algorithm>
using namespace std;
queue<int> q;
int n;
void print()
{
printf("Discarded cards:");
if(n!=1) printf(" "); //小心,否则会Presentation Error
int a;
while(n!=1)
{
a=q.front();
printf("%d",a);
q.pop();
a=q.front();
q.pop();
q.push(a);
n--;
if(n!=1)
printf(", ");
}printf("\n");
a=q.front();
printf("Remaining card: %d\n",a);
q.pop();
}
int main()
{
while(~scanf("%d",&n)&&n)
{
for(int i=1;i<=n;i++)
q.push(i);
print();
}
return 0;
}