队列的一道题,题目就是给定1到n个数字,每次从最前面丢一个,然后把下一个放到最后面,直到只剩下一个。
#include<cstdio>
#include<queue>
using namespace std;
int main()
{
// freopen("in.txt","r",stdin);
queue<int>q;
int n;
while(~scanf("%d",&n)){
if(n==0) break;
while(!q.empty()) q.pop();
int a;
for(int i=1;i<=n;i++) q.push(i);
printf("Discarded cards:");
while(q.size()!=1){
a = q.front();
if(q.size()==n) printf(" %d",a);
else printf(", %d",a);
q.pop();
a = q.front();
q.pop();
q.push(a);
}
a=q.front();
printf("\nRemaining card: %d\n",a);
}
return 0;
}